思路:題目:給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o(1),時間複雜度應為 o(nodes),nodes 為節點總數。
example:
given 1
->2-
>3-
>4-
>5-
>null,
return1-
>3-
>5-
>2-
>4-
>null.
首先我們將乙個鍊錶分成兩條,一條記錄奇數,一條記錄偶數,然後將其和並即可,我們將奇數的頭指標標記為odd,將偶數的頭指標標記為even,然後用evenhead保持指向偶數鍊錶的頭以便於最後合併鍊錶,整個過程可以從下圖看出:
public listnode oddevenlist
(listnode head)
listnode odd = head, even = head.next, evenhead = even;
while
(even != null && even.next != null)
odd.next = evenhead;
return head;
}
這裡還有乙個非常值得注意的地方,迴圈中的判斷中的even一定不可以換成odd,因為迴圈結束後odd一定是不可以指向空節點的,這樣會導致奇數鍊錶的尾部指標丟失,而偶數指標在奇數指標後面,所以只需要保證even或者even.next不為空即可(●ˇ∀ˇ●) 力扣 328 奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...
力扣c語言實現 328 奇偶鍊錶
原題目連線 給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5...
力扣 奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...