头尾双指针,一次遍历,头处理奇数,尾处理偶数;
时间复杂度:O(N)
空间复杂度:O(N)
public int[] reOrderArray (int[] array) {
// write code here
//双指针,头尾指针
int[] nums = new int[array.length];
int head = 0;
int tail = array.length-1;
int index_head = head;
int index_tail = tail;
while(head < array.length && tail >= 0){
if(array[head] % 2 == 1){
//奇数,放前面
nums[index_head] = array[head];
index_head++;
}
head++;
if(array[tail] % 2 == 0){
//从后到前,如果为偶数,则从后开始填
nums[index_tail] = array[tail];
index_tail--;
}
tail--;
}
return nums;
}
京公网安备 11010502036488号