力扣解題思路 328 奇偶鍊錶

2021-10-08 04:00:38 字數 912 閱讀 1422

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