leetcode 奇偶鍊錶(js實現)

2021-10-24 01:21:46 字數 1311 閱讀 5841

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。

請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o(1),時間複雜度應為 o(nodes),nodes 為節點總數。

示例 1:

輸入: 1->2->3->4->5->null

輸出: 1->3->5->2->4->null

示例 2:

輸入: 2->1->3->5->6->4->7->null

輸出: 2->3->6->7->1->5->4->null

將奇數節點放入乙個鍊錶中,再將偶數節點放入另乙個鍊錶中,最後將偶數鍊錶的頭部連線到奇數鍊錶的尾部即可。借用官方的一張圖來說明問題:

將head初始化為奇鍊錶的頭部,odd初始化為奇鍊錶的尾部,evenhead初始化為偶鍊錶的頭部,even初始化為偶鍊錶的尾部,迴圈遍歷鍊錶,根據奇偶位置改變odd和even節點的指向即可。

/**

* definition for singly-linked list.

* function listnode(val, next)

*//**

* @param head

* @return

*///遍歷鍊錶,將奇節點放入乙個鍊錶中,偶節點放入乙個鍊錶中,然後再將偶節點連線在奇節點後面

varoddevenlist

=function

(head)

var odd = head //奇節點尾部,head表示奇節點頭部

var even = head.next //偶節點尾部

var evenhead = even //偶節點頭部

while

(even !=

null

&& even.next !=

null

) odd.next = evenhead //將偶節點的頭部連線到奇節點的尾部

LeetCode 奇偶鍊錶

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...

Leetcode奇偶鍊錶

奇偶鍊錶分開本身比較基礎,這個題目劃歸mediu的原因是對於空間複雜度和時間複雜度的要求上,額外的空間複雜度只能為o 1 即額外使用的空間與輸入鍊錶的長度無關。問題的關鍵在於兩個指標,乙個指向當前的奇數節點,乙個指向當前的偶數節點。分別記為odd,even。首先讓奇數節點的next指向偶數節點的ne...

leetcode 奇偶鍊錶

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null輸...