24.两两交换链表中的节点
Contents
24. 两两交换链表中的节点
|
|
题解 :
思路一:迭代
- 从头开始遍历链表
- 遍历当前节点node时,直接将node 与 node.next节点交换位置
- 然后继续遍历 node.next
- 重复以上操作。
- 循环结束条件 : node != null && node.next != null
|
|
复杂度分析 :
时间复杂度 : O(N)
空间复杂度 : O(1)
思路二 :递归
- 递归的思路,貌似刚接触时,特别不容易想
- 处理递归问题,有一个诀窍
- 那就是先不要考虑,算法的具体实现步骤
- 首先搞清楚,这个算法在解决什么问题
- 具体如何解决问题的细节,我们先不去考虑
- 此题目中,算法解决的问题,就是亮亮交换 head 开头的链表
- 所以 swapPairs(head.next.next), 也就是当前节点的 下下个节点反转后的结果
- 所以在得到 下下个节点反转后的结果之后,我们要做的就剩下,把head 和 head.next反转,再和 next_next 串起来即可
- 这样想,递归的思路还是标容易理解的。
|
|
复杂度分析:
时间复杂度 : O(N**)**
空间复杂度 : O(1)
Author 飞熊
LastMod Jun 23