AcWing 32. 调整数组顺序使奇数位于偶数前面
原题链接
简单
作者:
繁花似锦
,
2020-01-23 17:35:23
,
所有人可见
,
阅读 780
震惊,此题居然不用保证有序,保证有序可以开额外空间
想重写排序规则结果报SE??? ,此计不成还有insert()方法
#include <algorithm>
class Solution {
public:
//重写排序规则会SE?(求dalao解答~~)
// static bool cmp(int a,int b) // a排在b前面则返回true,否则返回false
// {
// if (a % 2 == 0 && b % 2 == 1 ) return false; // 唯一情况:a是偶,b是奇,b排在a前面
// return true;
// }
void reOrderArray(vector<int> &array) {
vector<int> a,b;
for(int i=0;i<array.size();i++)
{
if(array[i]%2==0) a.push_back(array[i]);
else b.push_back(array[i]);
}
b.insert(b.end(), a.begin(), a.end());
array=b;
}
};
y总的双指针也可以
class Solution {
public:
void reOrderArray(vector<int> &array) {
int l = 0, r = array.size() - 1;
while (l < r) {
while (l < r && array[l] % 2 == 1) l ++ ;
while (l < r && array[r] % 2 == 0) r -- ;
if (l < r) swap(array[l], array[r]);
}
}
};