一、題目描述
給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例 1:
輸入:head = [1,2,3,4]
輸出:[2,1,4,3]
示例 2:
輸入:head =
輸出:示例 3:
輸入:head = [1]
輸出:[1]
鍊錶中節點的數目在範圍 [0, 100] 內
0 <= node.val <= 100
二、解題思路
可以通過遞迴的方式實現兩兩交換鍊錶中的節點。
遞迴的出口是鍊錶中沒有節點,或者鍊錶中只有乙個節點,此時無法進行交換。
如果鍊錶中至少有兩個節點,則在兩兩交換鍊錶中的節點之後,原始鍊錶的頭節點變成新的鍊錶的第二個節點,原始鍊錶的第二個節點變成新的鍊錶的頭節點。鍊錶中的其餘節點的兩兩交換可以遞迴地實現。在對鍊錶中的其餘節點遞迴地兩兩交換之後,更新節點之間的指標關係,即可完成整個鍊錶的兩兩交換。
三、**
LeetCode206反轉鍊錶 24兩兩交換節點
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?class solution return prev class solution return pre class solution 給定乙個...
兩兩交換鍊錶節點24
方法一 迭代 我們把鍊錶分為兩部分,即奇數節點為一部分,偶數節點為一部分,a 指的是交換節點中的前面的節點,b 指的是要交換節點中的後面的節點。在完成它們的交換,我們還得用 prevnode 記錄 a 的前驅節點。演算法 1.firstnode 即 a 和 secondnode 即 b 分別遍歷偶數...
24 兩兩交換鍊錶中的節點
給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。要求從前往後,兩兩交換,意味著每一組的第二個指向的下乙個也應該是交換過了的,自然想到...