`
dugu108
  • 浏览: 23322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数组中0的移动

 
阅读更多

给定含有n个元素的整型数组a,其中包括0元素和非0元素,对数组进行排序,要求: 1. 排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变 2. 不能使用额外存储空间 例子如下 输入 0, 3, 0, 2, 1, 0, 0 输出 0, 0, 0, 0, 3, 2, 1

弱逼解法:

public class MoveZero {
    public static void doMove(int[] array) {
        for (int i = array.length - 2; i >= 0; i--) {
            if (array[i] != 0) {
                int j = i + 1;
                while (j <= array.length - 1) {
                    if (array[j] != 0) {
                        array[j - 1] = array[i];
                        array[i] = 0;
                        break;
                    }
                    j++;
                }

                if (j > array.length - 1) {
                    array[array.length - 1] = array[i];
                    array[i] = 0;
                }
            }
        }
    }
}

 正解:

public class MoveZero {
    public static void doMove(int[] array) {
        for (int i = array.length - 1, k = array.length - 1; i >= 0; i--) {
            if (array[i] != 0) {
                if (array[k] == 0) {
                    array[k] = array[i];
                    array[i] = 0;
                }
                k--;
            }
        }

    }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics