題目描述
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。
請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 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 ...