首页 > 其他 > 详细

19. Remove Nth Node From End of List

时间:2019-04-08 10:34:47      阅读:134      评论:0      收藏:0      [点我收藏+]

description:

Given a linked list, remove the n-th node from the end of list and return its head.
Note:
Given n will always be valid.
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.

my answer:

感恩

my answer

在链表中,两个有着固定距离的指针一起走的方法要记住,这里是前面那个走到最后一个结点了,后边这个正好走到倒数第n+1个,就是要删掉的那个前面一个

大佬的answer:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(!head->next) return NULL;
        ListNode *pre = head, *cur = head;//结点指针的定义
        for(int i = 0; i < n; ++i) cur = cur->next;
        if(!cur) return head->next;//如果链表长度就是n的话,一个special case
        while(cur->next){
            cur = cur->next;
            pre = pre->next;
        }
        pre->next = pre->next->next;
        return head;
    }
};

relative point get√:

hint :

19. Remove Nth Node From End of List

原文:https://www.cnblogs.com/forPrometheus-jun/p/10668683.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!