按奇偶排序数组 II
题目:
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。
示例:
输入:[4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
解题思路:用双指针分别指向奇数和偶数,再用一个新数组依次保存奇偶数
class Solution {
public int[] sortArrayByParityII(int[] A) {
int ans[] = new int[A.length];
int i = 0, j = 0, cur = 0;
while(A[i] % 2 == 0) i++; //i指向奇数
while(A[j] % 2 == 1) j++; //j指向偶数
for(; cur < ans.length; cur++) {
if(cur % 2 == 0) {
ans[cur] = A[j++];
while(j < ans.length && A[j] % 2 == 1) j++;
} else {
ans[cur] = A[i++];
while(i < ans.length && A[i] % 2 == 0) i++;
}
}
return ans;
}
}