[Leetcode] remove nth node from the end of list 删除链表倒数第n各节点

Posted 王大咩的图书馆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Leetcode] remove nth node from the end of list 删除链表倒数第n各节点相关的知识,希望对你有一定的参考价值。

Given a linked list, remove the n th node from the end of list and return its head.

For example,

   Given linked list: 1->2->3->4->5, and n = 2.

   After removing the second node from the end, the linked list becomes 1->2->3->5.

Note: 
 Given n will always be valid.
Try to do this in one pass.

这题比较简单,使用快慢指针,找到倒数第n个结点的前驱即可,然后连接其前驱和后继即可,值得注意的是,两个while的条件之间的关系。代码如下:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode *removeNthFromEnd(ListNode *head, int n) 
12     {
13         ListNode *nList=new ListNode(-1);
14         nList->next=head;
15         ListNode *pre=nList;
16         ListNode *fast=head;
17         ListNode *slow=head;
18         int num=0;
19 
20         while(num++<n)
21         {
22             fast=fast->next;
23         }   
24         while(fast->next)
25         {
26             pre=pre->next;
27             slow=slow->next;
28             fast=fast->next;
29         } 
30         pre->next=slow->next;
31 
32         return nList->next;
33     }
34 };

 



以上是关于[Leetcode] remove nth node from the end of list 删除链表倒数第n各节点的主要内容,如果未能解决你的问题,请参考以下文章

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

Leetcode-19 Remove Nth Node From End of List

Leetcode 19. Remove Nth Node From End of List(python)