/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
/*用两个指针p,q,最开始都指向头结点,让p先走n个结点,然后p,q一起
走,直到p走到尾结点。
参考自:https://github.com/soulmachine/leetcode*/
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
ListNode newHead(-1);
newHead.next = head;
ListNode *p(&newHead), *q(&newHead);
for(int i = 0; i < n; ++i) p = p->next;
while(p->next != nullptr){
p = p->next;
q = q->next;
}
ListNode *tmp = q->next;
q->next = q->next->next;
delete tmp;
return newHead.next;
}
};
LeetCode之Remove Nth Node From End of List
最新推荐文章于 2020-08-05 23:20:29 发布