面試題21 調整陣列順序使奇數字於偶數前面

2021-10-11 04:21:48 字數 562 閱讀 1976

題目:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。

菜鳥思路:

每找到乙個奇數,就往前挪,期間還要把元素往後移,空出位置給這個奇數

高手思路:

雙指標法,乙個游標從前往後遍歷,找到第乙個偶數a,另乙個游標從後往前遍歷,找到第乙個奇數b,交換ab的位置,直到游標重合結束。

劍指offer裡面提到,在判定條件的時候,抽象出來乙個方法,就可以給出一種通用的排序方法

public

int[

]exchange

(int

nums)

// 從後往前找到第乙個奇數

while

((nums[post]%2

==0)&& pre < post)

if(pre != post)

}return nums;

}

面試題21 調整陣列順序使奇數字於偶數前面

題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。1 nums.length 50000 1 nums i 10000 解題思路...

面試題21 調整陣列順序使奇數字於偶數前面

題目 解題思路 三種方法,暴力解法,首尾雙指標,快慢指標法。第一種暴力解法,通過引入乙個新的陣列用於記錄,從頭開始遍歷整個陣列,奇數從新陣列的開始為存入,偶數從最後一位開始存入,此方法時間和空間複雜度都是o n 演算法效率不是最優。第二種首尾雙指標法,演算法過程 第三種快慢指標法,顧名思義就是通過兩...

面試題21 調整陣列順序使奇數字於偶數前面

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。這應該是最直觀的思路了,即建立兩個列表,之後遍歷nums,所有奇數放入乙個列表,所有...