解题思路:
(1)如果不需要保持奇数和偶数原本的相对顺序
class Solution {
public:
void reOrderArray(vector<int> &array) {
int length = array.size(),i=0,curr=0;
while(i<length) {
if (array[i]%2==0) { //偶数
curr = i;
while(i<length && array[i]%2==0) {
i++;
}
if (i<length) {
swap(&array[curr],&array[i]);
i=curr+1;
} else break;
} else i++;
}
}
void swap(int *a,int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
};
(2)保持奇数偶数原本的相对顺序
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int> temp;
int count = 0;
for (int i=0;i<array.size();i++) {
if (array[i]%2==0) temp.insert(temp.end(),array[i]);
else {
temp.insert(temp.begin(),array[i]);
count++;
}
}
reverse(temp.begin(),temp.begin()+count);
array.swap(temp);
}
};
(3)还有一些采用排序的算法,可以去牛客网看看