leetcode24,交換鍊錶相鄰的節點

2022-02-13 10:34:27 字數 1002 閱讀 2563

given a linked list, swap every two adjacent nodes and return its head.

for example,

given1->2->3->4, you should return the list as2->1->4->3.

your algorithm should use only constant space. you maynotmodify the values in the list, only nodes itself can be changed.

對於這樣鍊錶交換的題目,我一般都有兩種解法。

第一種,看鍊錶每個節點帶有的資料量,這道題帶有只有乙個value值,只有乙個int值,所以我一開始的想法就是,不真實的交換節點,只是交換裡面的資料。

這樣的好處是空間複雜度特別省,適合那些每個節點資料很少,要求不高的鍊錶交換。

/**

* definition for singly-linked list.

* public class listnode

* } */

public

class

solution

return

head;}}

第二種解法就是真的去交換節點。

那麼就需要多餘的節點去記錄當前結點的情況然後去交換

我用h,1,2,3這4個節點來說明。

123是原來的節點。

而h是頭節點,指向1

下面是交換的步驟。

h->1->2->3

1->3(這個3通過2.next找)

h->2(這個直接有2)

h->->1(這個1也是直接有)

h->3(這個3通過1.next找)

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...