【题目】
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。
【示例】
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
【提示】
1 <= A.length <= 5000
0 <= A[i] <= 5000
【代码】
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
vector<int> rs;
vector<int> ji;
for(auto x:A)
if(x%2)
ji.push_back(x);
else
rs.push_back(x);
for(auto x:ji)
rs.push_back(x);
return rs;
}
};
【原地法】
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
vector<int> rs;
int len=A.size();
for(int i=0,j=len-1;i<j;){
if(A[i]%2){
swap(A[i],A[j]);
j--;
}
else
i++;
}
return A;
}
};
【双指针大法好啊!推荐这种方法】
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
vector<int> rs(A.size());
int ji=1,ou=0;
for(auto x:A){
if(x%2){
rs[ji]=x;
ji+=2;
}else{
rs[ou]=x;
ou+=2;
}
}
return rs;
}
};