删除单链表中倒数第k个结点
时间: 2023-05-25 17:02:07 浏览: 84
删除链表中倒数第N个结点
A:实现该问题的一种常用方法是使用双指针技巧。定义两个指针:快指针和慢指针。快指针先走k步,然后快慢指针同时向前遍历链表,当快指针到达链表末尾时,慢指针指向的结点就是倒数第k个结点。
代码实现:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
dummy = ListNode(0) # 哑结点
dummy.next = head
fast = dummy
slow = dummy
for i in range(n):
fast = fast.next
while fast.next != None:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return dummy.next
```
在该解法中,我们创建了一个哑结点作为头结点,以避免处理原始链表中的特殊情况。然后,我们创建了快指针和慢指针,并将快指针向前移动k个结点。然后,我们同时向前遍历链表,直到快指针到达末尾。最后,我们将慢指针指向的结点从链表中删除,并返回头结点。
阅读全文