1. 题目
移动零
2. 描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
3. 思路
声明一个 count 用于计数数组中不为 0 的元素个数
然后遍历数组,将不为 0 的元素存入数组前 count 位
然后将剩下的 nums.length - count 位置为 0
此时主要进行遍历操作,时间复杂度为 O ( n ) 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; } }