#283 移动零(Java)

(1)思路

  • 记录每个非0数组元素前面有多少个0,就将该元素向前移动多少位,并且记录数组一共有多少个0元素,全部非0元素移动完后,再在数组最后补上0即可。

(2)复杂度

  1. 时间复杂度:O(n)
  2. 空间复杂度:O(1)

(3)代码

class Solution {
    public void moveZeroes(int[] nums) {
        // 记录数组中的0的数量
        int zeroCount = 0;
        
        // 遍历数组,移动非0元素
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[i - zeroCount] = nums[i];
            } else {
                zeroCount++;
            }
        }

        // 在数组末尾补上相应数量的0
        for (int i = nums.length - zeroCount; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
}
posted @ 2024-07-19 12:12  KenWan  阅读(53)  评论(0)    收藏  举报