21. 调整数组顺序使奇数位于偶数前面
1 题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
2 题目分析
交换奇偶元素位置,首先就会想到双指针分别从数组的首尾往中间扫描,碰到偶数<奇数则交换
3 代码
class Solution {
public int[] exchange(int[] nums) {
if (nums == null || nums.length == 0) return new int[0];
int len = nums.length;
int begin = 0, end = len - 1;
while (begin < end) {
// 找到第一个偶数
while (begin < end && ((nums[begin] & 1) == 1)) {
begin++;
}
// 找到第一个奇数
while (begin < end && ((nums[end] & 1) != 1)) {
end--;
}
// 交换
if (begin < end) {
swap(nums, begin, end);
}
}
return nums;
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}