目录
一、题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例:
输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 50000
0 <= nums[i] <= 10000
二、分析
做指针向右遍历、遇到偶数停止、右指针往左遍历遇到奇数停止,然后执行俩俩交换;
三、代码
class Solution {
public int[] exchange(int[] nums) {
// 特殊情况处理
if(nums.length==0||nums == null){
return nums;
}
int left = 0;
int right = nums.length-1;
while (left<right){
// 左指针向右遍历、直找到第一个偶数
while (left<right&&nums[left]%2 != 0) left++;
// 右指针向左遍历、直到第一个奇数
while (left<right&&nums[right]%2 !=1) right--;
// 找到后进行交换
int temp =nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
return nums;
}
}
执行结果