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

2021-10-04 18:25:41 字數 666 閱讀 1456

題目:

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

示例:

輸入:nums = [1,2,3,4]

輸出:[1,3,2,4] 

注:[3,1,2,4] 也是正確的答案之一。

1 <= nums.length <= 50000

1 <= nums[i] <= 10000

解題思路:

1.雙指標法:兩個索引變數p和q分別指向陣列前後的元素,第乙個索引變數的初始值為0,指向陣列的第乙個元素;第二個索引變數的初始值為s-1,指向陣列的最後乙個元素

2.從前往後找第乙個偶數元素,從後向前找第乙個奇數元素,找到後交換兩者的位置

3.直到p>=q結束

**實現:

class solution {

public:

vectorexchange(vector& nums) {

int s=nums.size();

int p=0,q=s-1;

while(p耗時和記憶體使用情況:

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

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

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

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

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

題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。i o描述 void test1 test test1 numbers,sizeof numbers sizeof int void test2 test test2 numbe...