LeetCode- 19 删除链表的倒数第N个节点

news/发布时间2024/5/19 11:14:43

题目地址

https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/

参考实现

 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*//*** 通过链表长度 进行处理** @param head* @param n* @return*/public static ListNode removeNthFromEnd1(ListNode head, int n) {ListNode dumny = new ListNode(0, head);ListNode current = dumny;for (int i = 1; i < getLenth1(head) - n + 1; i++) {current = current.next;}//执行删除current.next = current.next.next;return dumny.next;}/*** 获取链表大小** @param head* @return*/public static int getLenth1(ListNode head) {int length = 0;while (head != null) {head = head.next;length++;}return length;}/*** 利用栈特性处理** @param head* @param n* @return*/public static ListNode removeNthFromEnd(ListNode head, int n) {ListNode dumny = new ListNode(0, head);Deque<ListNode> stack = (Deque<ListNode>) new LinkedList<ListNode>();ListNode current = dumny;while (current != null) {stack.push(current);current = current.next;}for (int i = 0; i < n; i++) {stack.pop();}ListNode peek = stack.peek();peek.next = peek.next.next;return dumny.next;}/*** 双指针处理** @param head* @param n* @return*/public static ListNode removeNthFromEnd3(ListNode head, int n) {ListNode dummy = new ListNode(0, head);ListNode first = head;ListNode second = dummy;for (int i = 0; i < n; i++) {first = first.next;}while (first != null) {first = first.next;second = second.next;}second.next = second.next.next;return dummy.next;}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/58714218.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

NGINX Ingress Controller 设置未配置过的域名增加默认路由

背景 k8s 集群对应的公网 slb ip 经常被人绑定域名,监控侧经常会收集到 502 相关状态码的异常告警,着手处理这种bad case策略 1. 所有没有在ingress 配置过的域名要进行处理,即不是公司的、非法绑定到slb 上的域名要加上一条策略 2. NGINX Ingress Controller 设置未配置过…

centos7 安装 Mysql 5.7.28,详细完整教程

https://cloud.tencent.com/developer/article/18863391. 下载 MySQL yum包wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm 复制2.安装MySQL源rpm -Uvh mysql57-community-release-el7-10.noarch.rpm 复制3.安装MySQL服务端,需要等待一些时间yum ins…

golang+kafka

目录1. 安装JDK、Zookeeper、Scala、kafka2. 启动kafka3. 创建topics4. 查看topics5. 打开一个producer6. 打开一个consumer7. 测试发送和接收消息Windows下安装Kafka 1. 安装JDK、Zookeeper、Scala、kafka 安装Kafka之前,需要安装JDK、Zookeeper、Scala。Kafka依赖Zookeeper,…

Python-数字取证秘籍(三)

Python 数字取证秘籍(三)原文:zh.annas-archive.org/md5/941c711b36df2129e5f7d215d3712f03 译者:飞龙 协议:CC BY-NC-SA 4.0第六章:阅读电子邮件和获取名称的配方 本章涵盖了以下配方:解析 EML 文件查看 MSG 文件订购外卖盒子里有什么?解析 PST 和 OST 邮箱介绍 一旦计…

一个.NET内置依赖注入的小型强化版

前言 .NET生态中有许多依赖注入容器。在大多数情况下,微软提供的内置容器在易用性和性能方面都非常优秀。外加ASP.NET Core默认使用内置容器,使用很方便。 但是笔者在使用中一直有一个头疼的问题:服务工厂无法提供请求的服务类型相关的信息。这在一般情况下并没有影响,但是…