删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
解题思路:
通过双指针定位到需要删除结点的前一个结点。具体流程如下:
- 快指针先走n步,保证两个指针的距离为n
- 快慢指针开始一起走,直到快指针的下一个结点为空
- 删除目标结点
class Solution {
// 双指针,快指针首先走n步。快慢指针随后一起走
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0, head);
ListNode slow = dummy;
ListNode fast = dummy;
// 1. 快指针先走n步,保证两个指针的距离为n
while(n > 0) {
fast = fast.next;
n--;
}
// 2. 快慢指针开始一起走,直到快指针的下一个结点为空
while(fast.next != null) {
fast = fast.next;
slow = slow.next;
}
// 3. 删除目标结点
slow.next = slow.next.next;
return dummy.next;
}
}
如果对您有所帮助的话,请点个赞再退出吧!!!
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
本文介绍如何使用Python实现删除链表的倒数第N个节点,通过快慢指针技巧定位并删除目标节点,适用于链表操作的面试题。
1152

被折叠的 条评论
为什么被折叠?



