题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分
示例:
输入: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;
}
}

该篇博客介绍了如何通过快慢双指针算法将一个整数数组中的奇数移到前半部分,偶数移到后半部分。具体实现过程中,快指针遇到奇数时与慢指针交换值,然后两者都右移,确保所有奇数位于数组前面,偶数在后。这种方法允许存在多种正确答案,如示例中的[1,3,2,4]。
583

被折叠的 条评论
为什么被折叠?



