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 | /** |