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; } } }

浙公网安备 33010602011771号