时间限制:1秒 空间限制:32768K 热度指数:613312
本题知识点: 数组
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
题目链接:题目链接
思路:用两个队列,一个队列存奇数,一个队列存偶数,再把队列中的数出队并放入数组中。
class Solution {
public:
void reOrderArray(vector<int> &array) {
queue<int> q1;
queue<int> q2;
for (int i=0;i<array.size();i++){
if(array[i] & 1)
q1.push(array[i]);
else
q2.push(array[i]);
}
int index = 0;
while(!q1.empty()){
array[index++] = q1.front();
q1.pop();
}
while(!q2.empty()){
array[index++] = q2.front();
q2.pop();
}
}
};
还有不借助队列,直接在vector操作也是ok的,遇到偶数,就把这个数从数组中删掉,在加到数组尾部。
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int>::iterator it = array.begin();
int len = array.size();
while(len){
if (*it & 1){
it++;
}
else {
int temp = *it;
it = array.erase(it);
array.push_back(temp);
}
len--;
}
}
};