一:題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
二:解題思路
利用空間換時間,定義一個輔助數組。
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;
}
};