题目:
21.调整数组的顺序使奇数位于偶数前面
要求:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
解法:
首尾双指针
定义头指针 left ,尾指针 right .
left 一直往右移,直到它指向的值为偶数
right 一直往左移, 直到它指向的值为奇数
交换 nums [left] 和 nums [right] .
重复上述操作,直到 left == right .
class Solution {
public int[] exchange(int[] nums) {
int left=0;
int right=nums.length-1;
int tmp=0;
while(left<=right) {
if(nums[left]%2==1&&nums[right]%2==0) {
left++;
right--;
}
else if(nums[left]%2==1&&nums[right]%2==1) {
left++;
}
else if(nums[left]%2==0&&nums[right]%2==0) {
right--;
}
else if(nums[left]%2==0&&nums[right]%2==1) {
tmp=nums[left];
nums[left]=nums[right];
nums[right]=tmp;
left++;
right--;
}
}
return nums;
}
}
结果:
输入[1,2,3,4,6,5,7]
输出[1,7,3,5,6,4,2]