Given a linked list, remove the n-th node from the end of list and return its head.
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.
Follow up:
Could you do this in one pass?
思路
有删除第一个节点的可能性,所以先设置一个头结点。
再根据n的值设置双指针,n为双指针之间的步数差。
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
target = ListNode(0)
pre = target
target.next = head
cur = head
while cur.next:
if n > 1:
n -= 1
else:
target = target.next
cur = cur.next
target.next = target.next.next
return pre.next
网友评论