欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

[Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]

发布时间:2023/12/10 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针] 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

【问题描述】[中等]

【解答思路】

1. 递归

时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public ListNode swapPairs(ListNode head) {if(head == null || head.next == null){return head;}ListNode next = head.next;head.next = swapPairs(next.next);next.next = head;return next;} }
2. 三指针

时间复杂度:O(N) 空间复杂度:O(N)

public ListNode swapPairs(ListNode head) {ListNode pre = new ListNode(0);pre.next = head;//前驱节点 ListNode temp = pre;while(temp.next != null && temp.next.next != null) {ListNode start = temp.next;//交换节点1ListNode end = temp.next.next;//交换节点2 temp.next = end;start.next = end.next;end.next = start;temp = start;}return pre.next;}

【总结】

1. 递归关注总结

找整个递归的终止条件:递归应该在什么时候结束?
找返回值:应该给上一级返回什么信息?
本级递归应该做什么:在这一级递归中,应该完成什么任务?

2.递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可

参考链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/hua-jie-suan-fa-24-liang-liang-jiao-huan-lian-biao/
参考链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/dong-hua-yan-shi-24-liang-liang-jiao-huan-lian-bia/
参考链接:https://lyl0724.github.io/2020/01/25/1/

总结

以上是生活随笔为你收集整理的[Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。