算法打卡日志-2020.11.19| LeetCode183

题目283. 移动零

这道题很简单,标签是数组。每次循环记录0的个数n,将非零数据移动到第一个0的位置,并将该位置的数据设为0。

官方题解的双指针跟这个思路是一样的,但是我是记录已经遍历过的0的个数,来推算第二个指针,同时没有使用交换的方式,而是直接将第一个指针的数据设为0。理论上来说运算量要小。

public void moveZeroes(int[] nums) {
    int zeroCount=0;
    for (int i = 0; i < nums.length; i++) {
        if (nums[i]==0){
            zeroCount++;
        }else {
            nums[i-zeroCount]=nums[i];
            nums[i]=0;
        }
    }
}
posted @ 2020-11-19 17:45  PPPPu  阅读(57)  评论(0)    收藏  举报