劍指offer 調整陣列順序使奇數字於偶數前面

2021-08-18 17:33:57 字數 615 閱讀 1428

題目:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

思路:既要保證奇數偶數各在陣列一部分,還要保證奇數們/偶數們相對位置不變。如果沒有額外的空間,目前我只想到o(n^2)時間複雜度的解法,當碰上奇數的時候,向前移動,並記錄其最終位置,以便作為下個奇數的位移參照標準。但如果有額外的空間,應該可以在o(n)的時間複雜度內完成。在第一次遍歷的過程中,把奇數按發現的順序儲存下來,偶數同是。第二次遍歷的時候,先把奇數放回放完放偶數。

public

void

reorderarray(int array)

queueoddqueue = new linkedlist();

queueevenqueue = new linkedlist();

for (int element : array)else

}for (int i = 0; i < array.length; i++)else

}}

劍指offer 調整陣列順序

時間限制 1秒 空間限制 32768k 本題知識點 陣列 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。首先想到的是利用兩個輔助陣列,乙個儲存奇數,乙個儲存偶數,這樣的...

劍指offer(調整陣列順序)

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1 暴力解法 從前到位掃瞄陣列,如果出現前面是偶數後面是奇數的情況,則交換。其中使用氣泡排序的思想。從後面朝前比較,使用外迴圈控制趟...

劍指offer(十三) 調整陣列順序

題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。題解 思路簡單的解法就是,建兩個臨時陣列,乙個奇數陣列,乙個偶數陣列,最後再組合起來即可,時間複雜度為o n 一解 pub...