原文地址:https://www.jianshu.com/p/fc56709aca43
时间限制:1秒 空间限制:32768K
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
class Solution {
public:
void reOrderArray(vector<int> &array) {
int siz=array.size();
if(siz<2)
return;
int i,j,k;
int oddNum=0;
for(i=0;i<siz;i++)
if(array[i]%2==1)
oddNum++;
vector<int> newArray(siz);
i=0;j=oddNum;
for(k=0;k<siz;k++){
if(array[k]%2==1)
newArray[i++]=array[k];
else
newArray[j++]=array[k];
}
for(k=0;k<siz;k++){
array[k]=newArray[k];
}
return;
}
};
运行时间:4ms
占用内存:456k
如果没有“并保证奇数和奇数,偶数和偶数之间的相对位置不变”这个限制:
class Solution {
public:
void reOrderArray(vector<int> &array) {
int siz=array.size();
if(siz<2)
return;
int i=0,j=siz-1;
if(i<j){
while((array[k]&1)==1)
i++;
while((array[k]&1)=0)
j--;
if(i<j){
int tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
return;
}
};
原文:https://www.cnblogs.com/cherrychenlee/p/10780952.html