时间限制:1秒 空间限制:32768K 热度指数:372493
本题知识点: 数组
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len=array.size();
int *a=new int[len+1];
int p1=0,p2=len-1,k1=0,k2=len;
int sum=0;
while(1){
if(array[p1]%2&&p1<len){a[k1++]=array[p1];sum++;}
if((array[p2]%2==0)&&p2>=0){a[--k2]=array[p2];sum++;}
p1++;p2--;
if(sum==len)break;
}
//array.clear();
for(int i=0;i<len;i++)
array[i]=a[i];
}
};
class Solution {
public:
void reOrderArray(vector<int> &array) {
for(int i=0;i<array.size();i++){
for(int j=array.size()-1;j>i;j--){
if(array[j]%2==1&&array[j-1]%2==0) {
swap(array[j],array[j-1]);
}
}
}
}
};