Description
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
Solution:
这道题的思路大概是这个样子:
- 用一个临时的新vector按顺序把奇数存起来
- 修改array使得偶数按顺序在后面排好
- 把之前存好的奇数copy回来
这样就可以在O(n)的时间解决这个问题
//C++
void reOrderArray(vector<int> &array) {
vector<int> temp;
for(int i = 0; i < array.size(); ++i){
if(array[i] % 2) temp.push_back(array[i]);
}
int index = array.size() - 1;
for(int i = index; i >= 0; --i){
if(array[i] % 2 == 0){
array[index--] = array[i];
}
}
for(int i = 0; i <= index; ++i){
array[i] = temp[i];
}
}