JAVA实现给定一个存 放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度0(1),时间复杂度为0 (n)。
时间: 2023-06-05 18:04:06 浏览: 103
你好,这个问题属于编程问题,可以给出以下解法:
可以使用双指针法,一个指针从数组的左端开始,一个指针从数组的右端开始,向中间移动,交换左右指针指向的元素,直到左指针和右指针相遇。具体实现可参考以下代码:
public class Solution {
public void reOrderArray(int [] array) {
if(array == null || array.length == 0) {
return;
}
int left = 0, right = array.length - 1;
while(left < right) {
while(left < right && (array[left] & 0x1) == 1) { //找到第一个偶数
left++;
}
while(left < right && (array[right] & 0x1) == 0) { //找到第一个奇数
right--;
}
if(left < right) { //交换左右指针指向的元素
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
}
}
阅读全文