2.给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2,输出:[1,2,3,5]示例2:输入:head=[1].n=1,输出:0示例3:输入:head=[1,2],n=1,输出:[1]
时间: 2024-05-04 22:16:27 浏览: 71
好的,针对您的问题,我可以给出下面的代码实现:
```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
fast = slow = dummy
for i in range(n+1):
fast = fast.next
while fast:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return dummy.next
```
上述代码中,我们使用快慢指针的思路来实现,其中 `dummy` 为一个虚拟节点,以便在删除第一个节点时进行处理。首先让 `fast` 指针向前移动 `n+1` 个节点,然后 `fast` 和 `slow` 同时向前移动,直到 `fast` 到达链表的末尾。此时,`slow` 指向的就是要删除的倒数第 `n` 个节点的前一个节点,我们只需要修改该节点的 `next` 指针即可实现删除操作。
因为题目所给的是一个数组,我们需要先将其转换成一个链表来进行处理,不然会报错。具体转换的代码如下:
```python
head = ListNode(head[0])
curr = head
for i in range(1, len(head)):
curr.next = ListNode(head[i])
curr = curr.next
```
祝您学习愉快!
阅读全文