题解 | #调整数组顺序使奇数位于偶数前面#
调整数组顺序使奇数位于偶数前面
http://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b
算法思想:用一个标志位flag 记录以排好的奇数位置。遍历如果为奇数,则将奇数移到flag 后面一个位置。应为flag到该奇数之间都为偶数所以进行后移。注意一种特殊情况如果第一位为偶数,flag默认为0,之后需要flag++,再进行赋值。所以就会导致第一位为偶数的一直会在第一位,为了排除这种影响,我们需要对这种特殊情况特殊处理。
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArray (int[] array) {
if(array.length==0)
return array;
//int[] ints = new int[]{};
// 上一个不是奇数的位置进行保留
int flag=0;// flag 存现已排好的奇数位置
int n=array.length;
// 先后移再放
for(int k=0;k<n;k++){
if(array[k]%2!=0){
int temp=array[k];
if(k==0){
array[k]=temp;
}else{
for(int j=k-1;j>flag;j--){
array[j+1]=array[j];
}
flag++;
array[flag]=temp;
}
}else{
//对于第一个为偶数的特殊处理
if(k==0){
flag=-1;
}
}
}
return array;
}
}
查看1道真题和解析