题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
思路
- 采用快慢指针,慢指针指向奇数应该存放的位置,快指针遍历数组
- 当快指针找到奇数时,和慢指针替换位置,然后慢指针+1,继续遍历
- 直到快指针遍历结束
Code
public class Solution {
public int[] exchange(int[] nums) {
if (null == nums || 0 == nums.length || 1 == nums.length) {
return nums;
}
int fastIndex = 0;
int slowIndex = 0;
while (fastIndex < nums.length) {
if (nums[fastIndex] % 2 == 1) {
swap(nums, fastIndex, slowIndex);
slowIndex++;
}
fastIndex++;
}
return nums;
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}