题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分
示例:
输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。
方法: 快慢双指针
思路: 快指针没有遇到奇数的期间,慢指针会一直停留在偶数处;当快指针遇到奇数后,快慢指针才会交换值,并都向右移。 如此,所以奇数都会位于数组的前半部分,偶数位于后半部分
class Solution {
public int[] exchange(int[] nums) {
int fast = 0, slow = 0, temp;
while (fast < nums.length) {
// 若快指针值为奇数,则与慢指针的值进行交换,且慢指针右移;
if (nums[fast] % 2 != 0) {
temp = nums[fast];
nums[fast] = nums[slow];
nums[slow] = temp;
slow++;
}
// 快指针右移;
fast++;
}
return nums;
}
}