91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

leetcode中如何解決兩兩交換鏈表中的節點問題

發布時間:2022-01-17 11:48:36 來源:億速云 閱讀:171 作者:小新 欄目:大數據

小編給大家分享一下leetcode中如何解決兩兩交換鏈表中的節點問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

 

題目鏈接

https://leetcode-cn.com/problems/swap-nodes-in-pairs/  

題目描述

給定一個鏈表,兩兩交換其中相鄰的節點,并返回交換后的鏈表。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3.
 
 

解題方案

 

思路

  • 標簽:鏈表

  • 本題的遞歸和非遞歸解法其實原理類似,都是更新每兩個點的鏈表形態完成整個鏈表的調整

  • 其中遞歸解法可以作為典型的遞歸解決思路進行講解

遞歸寫法要觀察本級遞歸的解決過程,形成抽象模型,因為遞歸本質就是不斷重復相同的事情[1]。而不是去思考完整的調用棧,一級又一級,無從下手。如圖所示,我們應該關注一級調用小單元的情況,也就是單個f(x)。

leetcode中如何解決兩兩交換鏈表中的節點問題  
調用棧

其中我們應該關心的主要有三點:

  1. 返回值

  2. 調用單元做了什么

  3. 終止條件

在本題中:

  1. 返回值:交換完成的子鏈表

  2. 調用單元:設需要交換的兩個點為head和next,head連接后面交換完成的子鏈表,next連接head,完成交換

  3. 終止條件:head為空指針或者next為空指針,也就是當前無節點或者只有一個節點,無法進行交換

 

代碼

遞歸解法

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;    }}
 

非遞歸解法

class Solution {    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;            ListNode end = temp.next.next;            temp.next = end;            start.next = end.next;            end.next = start;            temp = start;        }        return pre.next;    }}
 
 

畫解

leetcode中如何解決兩兩交換鏈表中的節點問題leetcode中如何解決兩兩交換鏈表中的節點問題leetcode中如何解決兩兩交換鏈表中的節點問題leetcode中如何解決兩兩交換鏈表中的節點問題leetcode中如何解決兩兩交換鏈表中的節點問題  

看完了這篇文章,相信你對“leetcode中如何解決兩兩交換鏈表中的節點問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平邑县| 黄浦区| 诸城市| 萨迦县| 兰考县| 广东省| 丹巴县| 古蔺县| 长垣县| 阜新市| 元谋县| 吴堡县| 东海县| 当雄县| 枣庄市| 新竹县| 莱西市| 汶上县| 麦盖提县| 怀集县| 新建县| 阳泉市| 湘阴县| 寿宁县| 运城市| 孝义市| 汝南县| 东方市| 屏东市| 无为县| 交口县| 阿城市| 武冈市| 肥乡县| 元朗区| 平利县| 巴马| 炎陵县| 丹阳市| 静安区| 马龙县|