#283 移动零(Java)
(1)思路
- 记录每个非0数组元素前面有多少个0,就将该元素向前移动多少位,并且记录数组一共有多少个0元素,全部非0元素移动完后,再在数组最后补上0即可。
(2)复杂度
- 时间复杂度:O(n)
- 空间复杂度: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;
}
}
}

浙公网安备 33010602011771号