905. 按奇偶排序数组
Opened this issue · 0 comments
xiwenAndlejian commented
思路
输入:数组A
为一个非负整数数组。
返回:返回数组元素和A
一致,且偶数元素排列在奇数元素之前。
解题
使用双指针,把数组前半部分(指偶数部分,而非元素个数的一半)中的奇数元素,与后半部分偶数元素对掉即可。
public int[] sortArrayByParity(int[] A) {
int l = 0;
int r = A.length - 1;
while (l < r) {
while (l < r && isOdd(A[l])) {
l++;
}
while (r > l && !isOdd(A[r])) {
r--;
}
if (r <= l) {
break;
}
A[l] ^= A[r];
A[r] ^= A[l];
A[l] ^= A[r];
}
return A;
}
public static boolean isOdd(int num) {
return (num & 1) == 0;
}