思路
- 双指针,收尾靠拢。
- 注意ij相遇边界处理
class Solution {
public int[] exchange(int[] nums) {
int i = 0, j = nums.length - 1;
while (i < j) {
//i < j防止这样的情况:i当前是奇数,j也是奇数,不加这个条件i就会越过j,swap已经处理过的元素
// 也可以防止全奇数
while (i < j && nums[i] % 2 == 1 ) {//最终结束条件为i=j,此时swap自己,无影响
i++;
}
while (i < j && nums[j] % 2 == 0) {//最终结束条件为i=j,此时swap自己,无影响
j--;
}
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
return nums;
}
}