题目
难度简单26输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路
设置双指针,分别位于头和尾。
头指针遇到奇数继续前进,遇到偶数停
尾指针遇到偶数继续前进,遇到奇数停
然后交换位置
代码
public int[] exchange(int[] nums) {
int left = 0;
int right = nums.length-1;
while(left<right){
//注意在过程也要有左右的判断,因为在退出循环的前一次中会有加减后
//left>right的情况
while(left<right&&nums[left]%2==1){
left++;
}
while(left<right&&nums[right]%2==0){
right--;
}
int tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
}
return nums;
}