注意到,这里给定数组的大小必为偶数,因此,要实现题目要求的奇数下标对应奇数,偶数下标对应偶数,我们可以考虑遍历一遍数组中的偶数下标,查看是否为偶数,若不是,则将其与奇数下标下对应的非奇数进行置换位置,同时记录下奇数下标的位置,以便在下一次遍历中直接从该点开始遍历。需要知道的是,当偶数下标对应的数字为偶数时,数组中奇数下标对应的数字必为奇数。代码如下:
vector<int> sortArrayByParityII(vector<int>& A) {
int index = 1;
for (int i = 0; i < A.size(); i+=2) {
if(A[i] % 2 != 0){
for (int j = index; j < A.size(); j+=2) {
if(A[j] % 2 == 0){
int tmp = A[i];
A[i] = A[j];
A[j] = tmp;
index = j + 2;
}
}
}
}
return A;
}