Leetcode(二) 移动零

 1 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
 2 
 3 示例:
 4 
 5 输入: [0,1,0,3,12]
 6 输出: [1,3,12,0,0]
 7 
 8 说明:
 9 
10     必须在原数组上操作,不能拷贝额外的数组。
11     尽量减少操作次数。

又是一个简单题,但是时间和目前最优解差距过大,分析了一下,主要是我在做的时候在做替换,并且,还是用的冒泡排序的思想,所以循环多,耗时就长。

并且自己的方法多做了一个循环,要来分析是否跳出循环。

目前最优解解法是把所有非0的按序提到前面,后面的剩下的直接赋值为0。

贴一下代码

class Solution {
    public void moveZeroes(int[] nums) {
        if (null == nums || nums.length < 2) {
            return;
        }
        int index = 0;
        for (int num : nums) {
            if (num != 0) {
                nums[index++] = num;
            }
        }
        while (index < nums.length) {
            nums[index++] =  0;
        }
    }
}

 

posted @ 2018-08-09 10:32  梁子文  阅读(83)  评论(0)    收藏  举报