LeetCode328 奇偶鍊錶

2021-10-09 06:55:09 字數 1328 閱讀 7451

題目描述

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

請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 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

說明:

應當保持奇數節點和偶數節點的相對順序。

鍊錶的第乙個節點視為奇數節點,第二個節點視為偶數節點,以此類推。

解題思路

這道題目的思路就是遍歷鍊錶,將鍊錶的中的所有的元素分為a和b兩個鍊錶,分別用來儲存奇數值和偶數值,遍歷結束之後,偶數鍊錶拼接在奇數鍊錶後面。具體實現過程如下:

**實現

/**

* definition for singly-linked list.

* function listnode(val, next)

*//**

* @param head

* @return

*/var

oddevenlist

=function

(head)

let a = head // 存放奇數節點

let b = head.next // 存放偶數節點

const node = head.next // 記錄b鍊錶的頭節點

while

(b !==

null

&& b.next !==

null

) a.next = node

return head

};

提交結果

LeetCode 328 奇偶鍊錶

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

LeetCode 328 奇偶鍊錶

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

Leetcode328 奇偶鍊錶

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