天天看點

【leetcode刷題】12.移動零——Java版

【leetcode刷題】12.移動零——Java版
【leetcode刷題】12.移動零——Java版

前言

哈喽,大家好,我是一條。

糊塗算法,難得糊塗

Question

283. 移動零

難度:簡單

給定一個數組 nums,編寫一個函數将所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

示例:

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

說明:

必須在原數組上操作,不能拷貝額外的數組。
盡量減少操作次數。      

Solution

類似之前的

有序數組合并

依然采用

雙指針

  • 定義兩個指針,一個指向零,一個指向非零。
  • 指向非零的指針先移動
  • 如果目前元素不等于零,和零指針交換值,并且零指針前進一

同樣的

27.移除元素

,大家可以練習一下

Code

所有

leetcode

代碼已同步至 github 歡迎

star

/**
 * @author yitiaoIT
 */
class Solution {
    public void moveZeroes(int[] nums) {
        int notZero=0;
        int zero=0;
        while(notZero<nums.length){
            if (nums[notZero]!=0){
                int tmp;
                tmp=nums[notZero];
                nums[notZero]=nums[zero];
                nums[zero]=tmp;
                zero++;
            }
            notZero++;
        }
    }
}      

Result

複雜度分析
  • 時間複雜度:O(N)
【leetcode刷題】12.移動零——Java版

🌈尋寶

⭐今天是堅持刷題更文的第12/100天

⭐各位的點贊、關注、收藏、評論、訂閱就是一條創作的最大動力

⭐更多算法題歡迎關注專欄《leetcode》

為了回饋各位粉絲,禮尚往來,給大家準備了一條多年積累下來的優質資源,包括 學習視訊、面試資料、珍藏電子書等

怎麼領取請大家自己找,尋寶遊戲現在開始。

找不到可以評論留言,一條就會注意到你。

如果還不行,請私信我。