Jianzhi offer 21. Adjust the array order so that the odd numbers are in front of the even numbers
Title description
Problem-solving ideas
Double pointer
nums[0...oddIndex]
Store odd numbers, nums[evenIndex...nums.length - 1]
store even numbers
class Solution {
public int[] exchange(int[] nums) {
if (nums == null || nums.length == 0) return nums;
//双指针,nums[0...oddIndex]存奇数,nums[evenIndex...nums.length - 1]存偶数
int oddIndex = 0, evenIndex = nums.length - 1;
while (oddIndex < evenIndex) {
//如果是偶数的话,那就交换
if ((nums[oddIndex] & 0x01) == 0) {
int temp = nums[oddIndex];
nums[oddIndex] = nums[evenIndex];
nums[evenIndex] = temp;
evenIndex--; //偶数指针移动
} else {
//如果是奇数的话,不用交换,直接移动指针
oddIndex++;
}
}
return nums;
}
}