行业知识
力扣hot100题解(python版29-32题)
2026-11-02 05:41:31
来源:互联网转载
29、删除链表的倒数第N个结点
���你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1输出:[]
示例 3:
输入:head = [1,2], n = 1输出:[1]
思路解答:
- 使用两个指针 fast 和 slow,初始时都指向头节点。
- 让 fast 先向前移动 n+1 步,这样 fast 和 slow 之间相隔 n 个节点。
- 接着同时移动 fast 和 slow,直到 fast 到达链表末尾,此时 slow 就指向要删除节点的前一个节点。
- 修改指针,将 slow.next 指向 slow.next.next,即删除倒数第 n 个节点。
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: dummy = ListNode(0) dummy.next = head fast = dummy slow = dummy # 让 fast 先向前移动 n+1 步 for _ in range(n + 1): fast = fast.next # 同时移动 fast 和 slow while fast is not None: fast = fast.next slow = slow.next # 删除倒数第 n 个节点 slow.next = slow.next.next return dummy.next
30、两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4]输出:[2,1,4,3]
示例 2:
输入:head = []输出:[]
示例 3:
输入:head = [1]输出:[1]
提示:
- 链表中节点的数目在范围 [0, 100] 内
- 0