題目:
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。
示例:
輸入: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...