第十三個算法-移動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;         }      }}最後一個小時的時間沒有寫出來,後來想一想不能如此的耽誤時間了,這原本就是簡單的算法,爲何我作的如此困難,參考了別人的思路,而後寫出了上面的代碼。頭疼。不會更笨了吧。
相關文章
相關標籤/搜索