【题目】 给定一个非负整数数组 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; } };