LeetCode 每日一題 283. 移動零

1. 題目

  1. 移動零

2. 描述

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

示例:

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

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

3. 思路

  1. 聲明一個 count 用於計數數組中不爲 0 的元素個數
  2. 然後遍歷數組,將不爲 0 的元素存入數組前 count
  3. 然後將剩下的 nums.length - count 位置爲 0
  4. 此時主要進行遍歷操作,時間複雜度爲 O(n)O(n).

4. 實現

public void moveZeroes(int[] nums) {
    // 計數不爲零的元素個數
    int count = 0;

    // 遍歷數組,將不爲 0 的存入數組前 count 位
    for (int item : nums) {
        if (item != 0) {
            nums[count++] = item;
        }
    }

    // 將剩下的 num.length - count 位置爲 0
    for (int i = count; i < nums.length; i++) {
        nums[i] = 0;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章