19. Remove Nth Node From End of List

Posted 咖啡中不塌缩的方糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19. Remove Nth Node From End of List相关的知识,希望对你有一定的参考价值。

Given a linked list, remove the nth 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.

很典型的2 pointer题目。先前进n, 然后当快的pointer到tail时候,慢的正好到要删除的前一个。

public ListNode RemoveNthFromEnd(ListNode head, int n) {
        ListNode slow = head;
        ListNode fast = head;
        ListNode sentinel = new ListNode(-1);
        sentinel.next = head;
        
       
        //first get the n distance between slow and fast, as it always valid, no need for valid check
        for(int i =0;i<n;i++)
        {
            fast = fast.next;
        }
        if(fast == null)//the first nood
        {
            sentinel.next = head.next;
            return sentinel.next;
        }
        
        while(fast.next != null)
        {
            slow = slow.next;
            fast = fast.next;
        }
 
        slow.next = slow.next.next;
        return head;
    }

 

以上是关于19. Remove Nth Node From End of List的主要内容,如果未能解决你的问题,请参考以下文章

LC_19. Remove Nth Node From End of List

19. Remove Nth Node From End of List

19. Remove Nth Node From End of List

19. Remove Nth Node From End of List

[LeetCode19]Remove Nth Node From End of List

19. Remove Nth Node From End of List