题目要求
给定非负整数的数组A,A中的一半整数是奇数,而整数的一半是偶数。
对数组进行排序,以便每当A [i]为奇数时,i就是奇数; 只要A [i]是偶数,i就是偶数。
您可以返回满足此条件的任何答案数组
解题思路
要保证当A [i]为奇数时,i就是奇数; 只要A [i]是偶数,i就是偶数。
我们使用两个指针分别指向第一个偶数位和奇数位,然后分别判断偶数位和奇数位是否符合题意,当出现不符合的时候进行偶数位和奇数位交换。
主要代码c++
class Solution {
public:vector<int> sortArrayByParityII(vector<int>& A) {
for(int i=0, j=1; i<A.size(); i+=2, j+=2){
while(i < A.size() && A[i]%2 == 0) i+=2; //偶数位保证偶数,出现不符合的时候记录下标while(j < A.size() && A[j]%2 == 1) j+=2; //奇数位保证奇数,出现不符合的时候记录下标if(i < A.size()) swap(A[i], A[j]); // 否则就交换}return A;}
};