Leetcode No 24 兩兩交換鍊錶中的節點

2021-10-11 16:34:29 字數 552 閱讀 6124

一、題目描述

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。

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

示例 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.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。要求從前往後,兩兩交換,意味著每一組的第二個指向的下乙個也應該是交換過了的,自然想到...