输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。如输入:nums = [1,2,3,4] 输出:[1,3,2,4]。
这道题比较简单,定义两个指针left、right,分别从左往右、从右往左遍历,如果左边的元素left的值是基数,则left++,如果left的值为偶数,则对right对应的值进行判断,如果为奇数,则交换同时left++、right--,否则将right--。
package leecodeOff;
import java.util.Arrays;
/*
* 21.调整数组顺序使奇数位于偶数前面
*/
public class Demo21 {
/*
* 用两个指针,分别从左和右遍历
*/
public int[] exchange(int[] nums) {
int left = 0;
int length = nums.length;
if (length > 0) {
int right = nums.length - 1;
while (left < right) {
int tempLeft = nums[left];
if (tempLeft % 2 == 1) {
left++;
} else {
int tempRight = nums[right];
if (tempRight % 2 == 1) {
nums[left] = tempRight;
nums[right] = tempLeft;
left++;
right--;
} else {
right--;
}
}
}
}
return nums;
}
public static void main(String args[]) {
Demo21 demo = new Demo21();
int[] nums = {1,2,3,4};
System.out.println(Arrays.toString(demo.exchange(nums)));
}
}