解法一:用空间换时间—(不推荐) 这种题咋一眼看见肯定会闪过开辟一个数组,然后遍历一遍将奇数放进去,然后再遍历一遍把偶数放进去以达到效果 但是这种方法就是浪费空间,然后换求时间
class Solution {
public:
void reOrderArray(vector<int> &array) {
//奇数在偶数前面
int num=array.size();
vector<int> vec;
for(int i=0;i<num;i++){
if(array[i]&1){
vec.push_back(array[i]);
}
}
for(int i=0;i<num;i++){
if(!(array[i]&1)){
vec.push_back(array[i]);
}
}
array=vec;
}
};
解法二: 用时间换空间
运用两个辅助指针和一个储存临时变量的temp值,
class Solution {
public:
void reOrderArray(vector<int> &array) {
int i=0;
for(int j=0;j<array.size();j++){
if(array[j]&1){ //如果是奇数
int temp=array[j]; //用temp保存临时值
for(int k=j-1;k>=i;k--){
//将(i,j)间的数据往后面移动
array[k+1]=array[k];
}
array[i]=temp;
i++;
}
}
}
};
如有错误,多多指教!