-
Java实现Leetcode链表-删除链表的倒数第N个节点
2019-10-30 16:04:14Java实现Leetcode链表-删除链表的倒数第N个节点 一、 问题描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个...Java实现Leetcode链表-删除链表的倒数第N个节点
一、 问题描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
方法一:两次扫描
第一次扫描求出链表长度;
第二次将倒数n个转化成正数length-n个,然后执行删除。实现代码如下:
public static ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy= new ListNode(0); dummy.next=head; int length=0; ListNode first=head; while(first!=null) { length++; first=first.next; } length-=n; first=dummy; while(length>0) { length--; first=first.next; } first.next=first.next.next; return dummy.next; }
方法二
一次扫描
实现代码如下:
public static ListNode removeNthFromEnd(ListNode head, int n) { //定义一个哑结点指向头结点 ListNode dummuy=new ListNode(0); dummuy.next=head; ListNode p1=dummuy,p2=dummuy;//定义两个工作指针 //先让p1移动n次 while(n>0) { n--; p1=p1.next; } //让p1和p2一起移动,至到p1.next=null while(p1.next!=null) { p1=p1.next; p2=p2.next; } //执行删除 p2.next=p2.next.next; return dummuy.next; }
-
Java实现 LeetCode 19删除链表的倒数第N个节点
2020-02-12 15:09:5219. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&...19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。PS:
递归大法:1ms/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { return removeNode(head,n)==n?head.next:head; } public int removeNode(ListNode node,int n) { if(node.next == null) return 1; int m = removeNode(node.next, n); if(m == n) if(m == 1) node.next = null; else node.next = node.next.next; return m+1; } }
-
删除链表的倒数第N个节点(java实现)
2021-01-05 14:38:57删除链表的倒数第N个节点(java实现) 题目 给定一个链表,删除链表的倒数第 n 个节点并返回头结点。 例如,给定一个链表: 1->2->3->4->5, 并且 n = 2. 当删除了倒数第二个节点后链表变成了 1->2->...转载自 LeetCode - 删除链表的倒数第N个节点,如果不太理解代码可以去这个博客看看链表-如何高效删除链表的倒数第N个节点
删除链表的倒数第N个节点(java实现)
题目
给定一个链表,删除链表的倒数第 n 个节点并返回头结点
。例如,给定一个链表: 1->2->3->4->5, 并且 n = 2. 当删除了倒数第二个节点后链表变成了 1->2->3->5.
说明:
给的 n 始终是有效的。尝试一次遍历实现。解法
很简单的一道题,既然只允许遍历一次,且N一直有效,那么可以利用双指针解法(前指针、后指针),让前指针先走N步,再让两个在指针同时后移,直到前指针到达尾部,此时,后指针的下一个节点就是要被删除的节点了。@Test public void test() { ListNode head = new ListNode(1); ListNode listNode = removeNthFromEnd(head, 1); System.out.println(listNode); }
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode preNode = head; ListNode curNode = head; for (int i = 0; i < n; i++) { curNode = curNode.next; } if (curNode == null) { return preNode.next; } while (curNode.next != null) { preNode = preNode.next; curNode = curNode.next; } preNode.next = preNode.next.next; return head; } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
-
删除链表的倒数第N个节点java实现
2020-09-19 16:50:38删除链表的倒数第N个节点 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4-&...https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head==null||n==0){ return null; } int i=0; ListNode f=head; ListNode s=head; ListNode p=head; //快节点先走n-1步 while(f.next!=null&&i<n-1){ f=f.next; i++; } //如果当前快节点到头了但是还没走到n-1步,说明链表长度不够,直接返回 if(f.next==null&&i<n-1){ return head; } //如果当前快节点到头了并且走到n-1步,说明删除链表头结点,返回head.next if(f.next==null&&i==n-1){ return head.next; } //此时快慢同时出发,到快节点到头为止 while(f.next!=null){ f=f.next; //p记录s的前置节点 p=s; s=s.next; } //删除s p.next=s.next; return head; } }
-
Java 删除链表的倒数第N个节点
2019-04-27 20:47:381. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3... -
Java实现-删除链表中倒数第n个节点
2017-06-25 10:59:17给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题? Yes 样例 给出链表1->2->3->4-... -
LeetCode 精选 TOP 面试题(Java 实现)—— 删除链表的倒数第N个节点
2020-01-10 20:28:34删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&... -
java实现leetcode第19题 —— 删除链表的倒数第 n 个节点
2019-04-02 12:27:36给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 思路与代码 ... -
Leetcode算法Java全解答--19. 删除链表的倒数第N个节点
2018-11-19 22:13:28删除链表的倒数第N个节点 文章目录Leetcode算法Java全解答--19. 删除链表的倒数第N个节点题目想法结果总结代码我的答案大佬们的答案测试用例其他 题目 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头... -
LeetCode题目:19. 删除链表的倒数第N个节点 解题思路及Java实现
2020-11-05 15:58:17给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是... -
LeetCode019-删除链表的倒数第N个节点-中等-Java实现
2020-07-11 11:09:30题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n ... -
leetcode 19.删除链表的倒数第N个节点 Java
2021-01-18 22:31:53删除链表的倒数第N个节点做题博客链接题目链接描述示例初始代码模板代码 做题博客链接 https://blog.csdn.net/qq_43349112/article/details/108542248 题目链接 ...描述 给你一个链表,删除链表的倒数第 n 个结点,并且... -
LeetCode 删除链表的倒数第n个节点(JAVA)
2020-06-04 21:43:49给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 代码实现 public class... -
数据结构与算法Java版:删除链表的倒数第 n 个节点
2021-01-11 16:42:00给定一个链表,删除链表的倒数第 n 个节点。例如,给定一个链表: 1 -> 2 -> 3 -> 4 -> 5, 和 n = 2。当删除了倒数第二个节点后,链表变为 1 -> 2 -> 3 -> 5。 你可以假设,给定的 n 是有效的。... -
leetcode链表题--删除链表的倒数第N个节点(java实现)
2018-08-07 00:52:54给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3... -
leetcode -19 -删除链表的倒数第N个节点 - java版
2020-05-15 15:01:01文章目录题目代码 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->... * [19] 删除链表的倒数第N个节点 */ // @lc code= -
19. 删除链表的倒数第 n 个节点 Leetcode Java
2020-06-18 09:24:02//给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 // // 示例: // // 给定一个链表: 1->2->3->4->5, 和 n = 2. // //当删除了倒数第二个节点后,链表变为 1->2->3->5. /... -
Leetcode刷题链表之删除链表的倒数第N个节点
2019-08-20 13:50:44删除链表的倒数第N个节点(java、python) 1、问题描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个... -
删除链表的倒数第N个节点 (Java)
2018-12-06 15:17:41给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3... -
【Java】LeetCode 19. 删除链表的倒数第N个节点
2020-07-17 18:48:20给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是... -
Leetcode(Java)-19. 删除链表的倒数第N个节点
2020-02-01 16:44:51给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n保证... -
leetcode Java二刷:19. 删除链表的倒数第N个节点
2021-01-11 19:21:49删除链表的倒数第N个节点 思路: 首先,可以先遍历一遍得到链表长度,再寻找待删除的节点。 一遍循环的实现方法: 两个指针first和second,first先于seconnd指针n步,即first指针先后移n步,然后二者再同步后移... -
【LeetCode】19. 删除链表的倒数第N个节点(Java)
2020-10-18 10:18:22给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? /** * Definition for singly-linked list. * public class ListNode { ...
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
在 Linux 上构建企业级 DNS 域名解析服务
-
2013年上半年 信息系统管理工程师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
基于Qt的LibVLC开发教程
-
用nodejs抓取-源码
-
破折号-源码
-
CentOS 7.8安装Java8
-
深入剖析 ConcurrentHashMap
-
JMETER 性能测试基础课程
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
NFS 实现高可用(DRBD + heartbeat)
-
2016年下半年 信息系统监理师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
程序员必修基础套餐课
-
产品需求分析神器:KANO模型分析法
-
Kubernetes下日志采集、存储与处理技术实践
-
2013年上半年 信息系统监理师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
Arduino Timer 用法注意事项
-
从理论到试验台,WiFi DCF网络的性能评估
-
通过新颖的二元君主蝶优化算法解决0-1背包问题