LeetCode每日一题,24. Swap Nodes in Pairs
先看题目描述

大意就是给定一个链表,两两交换其中相邻的节点,然后返回交换后的链表
算法和思路
算法流程
- 先判断链表是否为空,或者只有一个节点,则不需要操作,直接返回 head
 - 初始化 pre = null,node = head,res = head.next
 - 然后开始移动 node 遍历链表,并在途中交换相邻节点 node 与 node.next
- 交换相邻节点需要三个参数:要交换的 first 节点和 last 节点,还有 first 的前置节点 pre,交换操作如下:
- 若 last 为空,则无需交换,直接返回
 - 令 temp = last.next
 - last.next = first
 - first.next = temp
 - 若 pre 不为空,则 pre.next = last
 
 - 交换 node 与 node.next 后,node 变为较后节点,令 pre = node,node = node.next
 
 - 交换相邻节点需要三个参数:要交换的 first 节点和 last 节点,还有 first 的前置节点 pre,交换操作如下:
 - 持续上述操作直至 node 为空,交换后的链表的头节点为 res,即一开始的 head.next,返回 res即可
 
算法源码
1  | /**  |