题目描述:
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点
输入输出实例:
思路:这道题目我们可以用双指针来做,让first和second指针之间的距离为n+1,然后我们first和second指针都往后移动,这样当first所指的为最后一个节点的后一个(即空节点)的时候,我们的second刚好在倒数第n个节点的前一个节点,然后我们second.next = second.next.next,这样达到去除第n个节点的目的。根据上述思路我们有以下代码:
python
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
#创建一个虚拟节点方便处理边界
dummy = ListNode()
dummy.next = head
first = dummy
second = dummy
for _ in range(n+1):
first = first.next
while first:
first = first.next
second = second.next
second.next = second.next.next
return dummy.next