922. 按奇偶排序数组 II
问题描述:传送门
思路:
1、双指针维护下标i和下标j
①A[i]遇到奇数时,与A[j]遇到偶数交换,最后return A
2、将一个数分类讨论着放
①新开一个盒子,继承A盒子的大小。
②设置好i盒子为偶数盒子,放满了,就i+2;
j盒子为奇盒子,同理。
双指针代码:
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
int n =A.size();
for(int i=0;i<n;i+=2){
//原来i+2在for循环是这么表示
int j=1;
if(A[i]%2==1){
while(A[j]%2==1){
j+=2;
}
swap(A[i],A[j]);
}
}
return A;
}
};
奇偶盒子代码:
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
vector<int> res(A.size());//继承A盒子大小
int ev=1,ou=0;//定义奇偶
for(int i=0;i<A.size();i++){
if(A[i]%2==0){
res[ou]=A[i];
ou+=2;//偶数放偶数盒子里
}else{
res[ev]=A[i];
ev+=2;//奇数放奇数盒子里
}
}
return res;
}
};