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.

AC代码:

#Definition for singly-linked list.
class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution(object):
    def removeNthFromEnd(self, head, n):
        front = behind = head
        for _ in xrange(n):
            front = front.next
        if front == None: return behind.next
        while front.next:
            front = front.next
            behind = behind.next
        behind.next = behind.next.next
        return head

思路:

因为是移除从后面数第n个,所以用两个指针,第一个先移动n次,然后两个指针一起移动,快的指针移动到最后的时候,慢的指针正好移动到离队尾差n个。

以上是关于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