力扣(LeetCode) 兩兩交換鍊錶中的結點

2022-07-31 18:54:15 字數 805 閱讀 5195

解題思路

先讚後看,時薪百萬!

首先我們用考慮把大象裝進冰箱分幾步法考慮這個題。

我們要做的就是找到4個點:

頭(可以是空)

點1點2

尾(可以是空)

當前:頭(可以是空)-> 點1 -> 點2 -> 尾(可以是空)

目標:頭(可以是空)-> 點2 -> 點1 -> 尾(可以是空)

我們需要幹的活兒:

步1. 讓頭指向點2

步2. 讓點2指向點1

步3. 讓點1指向尾

然後就是,最開始其實是空的。所以先搞乙個假頭裝上。

最後返回的時候再從假頭後面開始返回鍊錶就ok啦。

class solution:

h = listnode(0)

h.next = head # 假頭

temph = h # 指標指向當前的頭

while temph.next and temph.next.next: # 存在點1和點2

node1 = temph.next

node2 = temph.next.next

temph.next = node2 # 步1

node1.next = node2.next # 步2

node2.next = node1 # 步3

temph = node1 # 移動指標,指向新的頭

return h.next

力扣 24 兩兩交換鍊錶中的節點 鍊錶 遞迴

思路一 順著做,這樣也有兩種做法。第一種就是直接兩個兩個交換,那麼需要記錄前驅和後繼。第二種就是先把鍊錶分成兩個小的鍊錶,乙個儲存奇數字置的樹,乙個儲存偶數字置的數,然後再把他們合起來。definition for singly linked list.struct listnode class s...

力扣日記 024 兩兩交換鍊錶中的節點 遞迴

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。根據題意,我以為 對鍊錶1 返回1 對鍊錶1,2 返回2,1 對鍊錶1,2,3 返回2,1,3 對鍊錶1,2,3,4 返回2,1,4,3 對鍊錶1,2,3,4,5 返回2,1,4,...

兩兩交換鍊錶中的節點 leetcode

leetcode位址 兩兩交換鍊錶中的節點 使用兩種方法,迭代和遞迴 這是使用的節點類 public class listnode listnode int val listnode int val,listnode next 判斷是否滿足條件,這裡的條件設定為鍊錶的個數是否為偶數,判斷方法為利用當...