美文网首页
19. Remove Nth Node From End of

19. Remove Nth Node From End of

作者: LonelyGod小黄老师 | 来源:发表于2016-10-19 20:11 被阅读0次

    Problem:

    Remove Nth Node From 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.

    Solution:

    two pointers

    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            ListNode * it = head;
            ListNode * fast = head;
            if(head -> next == NULL) return NULL; //important
            for(int i = 0;i < n; i++)
            {
                fast = fast -> next;
            }
            if(fast == NULL) //important
            {
                head = it -> next;
                delete it;
                return head;
            }
            while(fast->next != NULL)
            {
                fast = fast->next;
                it = it ->next;
            }
            if(it->next != NULL)
            {
                ListNode* discard = it -> next;
                it->next = it->next->next;
                delete discard;
            }
            return head;
        }
    };
    

    Memo:

    Always check the edge cases!!!
    Check validation for all it->next operation!!!!!

    相关文章

      网友评论

          本文标题:19. Remove Nth Node From End of

          本文链接:https://www.haomeiwen.com/subject/ncgxuttx.html