leetcode 24 兩兩交換鍊錶中的資料

2022-06-09 04:45:09 字數 836 閱讀 3818

思路比較清晰,使用快慢指標,每次迴圈中要完成的任務就是實現第乙個指標的next物件與第二個指標物件的交換,完成之後檢測後面是否存在兩個需要進行交換的節點,如果沒有,則完成交換,程式返回。如果判斷後面還有兩個節點需要進行交換,則使兩個指標分別向後推兩位,重新進行迴圈。**如下:

/*

* * definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* }; */

class

solution

else

}return

head;

}};

寫這個最大的問題就是剛剛開始沒有選擇動筆,後來發現這東西屬實有點抽象,畫了圖之後就清晰了很多。

更新一下遞迴版本,思路是一樣的,只不過想要寫出來沒那麼簡單,貼**

/*

* * definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* }; */

class

solution

};

LeetCode 24兩兩交換鍊錶的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.class solution listnode next head.next head.next next.next 指向下...

leetcode24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。注意while裡tmp1和tmp2已經交換了,所以node tmp1 definit...

leetcode 24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.複製 說明 listnode definition for singly linked list.type listnode struct func head listnode list...