LeetCode(19) - Remove Nth Node From End of List
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(19) - Remove Nth Node From End of List相关的知识,希望对你有一定的参考价值。
题目要求是,给你一个单向链表,和一个数字n,删除该链表倒数第n个node,其中测试案例中n能保证一定有效。
思路很简单,用两个指针,它们两个相隔为n,当后面的指针指向链表尾的时候,前面的指针指向的node的下一个node,就是要删除的那一个。
代码如下:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode removeNthFromEnd(ListNode head, int n) { 11 //当可能需要处理head的时候,用dumpNode来指向head,处理起来会方便很多。 12 ListNode dumpNode = new ListNode(0); 13 dumpNode.next = head; 14 ListNode prev = dumpNode; 15 ListNode curr = prev; 16 //让prev和curr的距离为n 17 while (n-- > 0) { 18 curr = curr.next; 19 } 20 //让curr走到链表尾部,prev随着curr一起走, 21 while (curr.next != null) { 22 prev = prev.next; 23 curr = curr.next; 24 } 25 //删除prev的下一个链表。 26 prev.next = prev.next.next; 27 //返回head。 28 return dumpNode.next; 29 } 30 }
以上是关于LeetCode(19) - Remove Nth Node From End of List的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode19. Remove Nth Node From End of List
leetcode 19. Remove Nth Node From End of List
LeetCode 19. Remove Nth Node From End of List
[LeetCode] 19. Remove Nth Node From End of List