python中给你一个链表,删除列表的倒数第 n 个结点,并且返回列表。 示例: 输入:lst = [1,2,3,4,5], n = 2 输出:[1,2,3,5]
时间: 2024-04-20 20:06:25 浏览: 85
可以使用双指针来解决这个问题。首先,让第一个指针向前移动 n+1 步。然后,同时移动第一个指针和第二个指针,直到第一个指针到达链表的末尾。此时,第二个指针指向要删除的节点的前一个节点。最后,将第二个指针的 next 指针指向要删除的节点的下一个节点即可。
代码示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def removeNthFromEnd(head: ListNode, n: int) -> ListNode:
dummy = ListNode(0)
dummy.next = head
first = dummy
second = dummy
for i in range(n+1):
first = first.next
while first is not None:
first = first.next
second = second.next
second.next = second.next.next
return dummy.next
# 测试
lst = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
n = 2
result = removeNthFromEnd(lst, n)
while result is not None:
print(result.val, end=" ")
result = result.next
# 输出:1 2 3 5
```
时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文