【劍指Offer】面試題14:調整數組順序使基數位於偶數的前面

一:題目描述

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

二:解題思路

利用空間換時間,定義一個輔助數組。


1.遍歷原始數組,統計奇數與偶數的個數

2.再次遍歷數組,奇數從輔助數組0位置開始存入,偶數從|奇數|位置開始存入



三:代碼實現

class Solution {
public:
    void reOrderArray(vector<int> &array) {
        
        int length=array.size();
        int numOfOdd=0;
        
        //統計奇數,偶數的個數
        for(int i=0;i<array.size();i++){
            
            if(array[i]%2==1)
                numOfOdd++;
        }
        
        //創建輔助數組,與array大小相同
        vector<int> adjustArray(length);
        int odd=0;
        int even=numOfOdd;
        for(int i=0;i<array.size();i++){  
            if(array[i]&1==1)
                adjustArray[odd++]=array[i];
            else
                adjustArray[even++]=array[i];
        }
        array=adjustArray;

    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章