思路:用双指针法把非0值覆盖到前面来,然后原本数组中有0的值,就把后面的位置全部赋值成0。
class Solution {
public void moveZeroes(int[] nums) {
//定义一个慢指针
int i = 0;
//用快指针遍历
for(int j=0;j<nums.length;j++){
//只要不等于0就进行覆盖
if(nums[j]!=0){
nums[i++] = nums[j];
}
}
//如果有0的值就把后面的值全部赋值成0即可
if(i<nums.length){
for(int j=i;j<nums.length;j++){
nums[j] = 0;
}
}
}
}
时间复杂度:O(n)
空间复杂度:O(1)
本文章只做笔记用途,谢谢观看!
参考:代码随想录