三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LeetCode热题100-两两交换链表中的节点

LeetCode热题100-两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]输出:[2,1,4,3]

思路

  1. 新建虚拟头结点,简化头部交换逻辑
  2. cur遍历,每次处理一组两个节点
  3. 设三组指针:first当前第一个、second当前第二个、nextPair下一组起点
  4. 完成交换:cur→second→first→下一组
  5. cur跳到first,继续循环
class Solution: def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]: dummy = ListNode(0, head) cur = dummy while cur.next and cur.next.next: first = cur.next second = cur.next.next next_p = second.next cur.next = second second.next = first first.next = next_p cur = first return dummy.next
← 返回列表