Remove Nth Node From End of List
LeetCode 19 (one pass)
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
"""
dummy node 在解決 linkedlist 的問題時可以節省很多麻煩
另外面試時可以問 is n valid, 如果它大於鏈結長度, one pass 解法會沒戲唱
dummy -> 1 -> 2 -> 3 -> 4 -> 5
t
r
"""
dummy = ListNode(0)
turtle = rabbit = dummy
dummy.next = head
for _ in range(n):
rabbit = rabbit.next
while rabbit.next:
# while rabbit and rabbit.next
turtle = turtle.next
rabbit = rabbit.next
turtle.next = turtle.next.next
return dummy.next
Last updated