第十三个算法-移动0

给定一个数组 nums,编写一个函数将全部 0 移动到数组的末尾,同时保持非零元素的相对顺序。算法

示例:数组

输入: 
输出: [0,1,0,3,12][1,3,12,0,0]

说明:函数

  1. 必须在原数组上操做,不能拷贝额外的数组。
  2. 尽可能减小操做次数。

 

思路:code

1,头一看,思路很简单,直接后移就能够了。判断一下数据,若是为0 就循环向后移动。循环

2,思路也对,就是判断少了,若是连续两个0呢?立马歇菜。数据

代码:移动

public void moveZeroes(int[] nums) {      int i ,y =0;      for (i =0; i <nums.length ; i++) {         if (nums[i] != 0) {            nums[y] = nums[i];            y++;         }      }      if(y != nums.length){         for (int j = y; j <nums.length ; j++) {            nums[j] = 0;         }      }}最后一个小时的时间没有写出来,后来想一想不能如此的耽误时间了,这原本就是简单的算法,为何我作的如此困难,参考了别人的思路,而后写出了上面的代码。头疼。不会更笨了吧。
相关文章
相关标签/搜索