题解 | #调整数组顺序使奇数位于偶数前面#

调整数组顺序使奇数位于偶数前面

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;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务