AcWing 32. 调整数组顺序使奇数位于偶数前面
原题链接
简单
作者:
尼古拉斯小布丁
,
2021-04-16 10:38:58
,
所有人可见
,
阅读 318
开两个vector,分别保存奇数,偶数
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int> even;
vector<int> odd;
int len=array.size();
if(array.empty())
cout<<0<<endl;
for(int i=0;i<len;i++){
if(array[i] % 2) odd.push_back(array[i]);
else even.push_back(array[i]);
}
int i=0,len1=odd.size();
for(;i<len1;i++) array[i]=odd[i];
int j=i,k=0,len2=even.size();
for(j=i;k<len2;k++,j++) array[j] = even[k];
}
};
双指针写法
class Solution {
public:
void reOrderArray(vector<int> &array) {
int i=0,j= array.size()-1;
while(i<j){
while(i<j && array[i]%2) i++;
while(i<j && array[j]%2 ==0) j--;
if(i<j) swap(array[i], array[j]);
}
}
};