题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
我的解法
我的解法思路:首先想到遍历这个数组,找到第一个奇数,并且使用num记住奇数的个数。
public class Solution {
public void reOrderArray(int [] array) {
int len = array.length;
int num = 0;//记住奇数的个数
for (int i = 0; i < len; i++) {
if (array[i] % 2 == 1) {
num++;
int temp = array[i];
for (int k = i; k >= num; k--){//这里k >= num是前面是已经位置正确的奇数个数
array[k] = array[k-1];
}
array[num-1] = temp;
}
}
}
}
最优解法
最优解法思路: