2
0
0

力扣hot4-移动零

文章摘要
|

这个题是个经典双指针题,一般做法是快指针遍历数组找非零值;慢指针标记非零区域的边界,负责存放找到的非零数字。然后引入中间值交换快慢指针。总之就是不要盯着零,而是盯着非零的数,去把他收集起来。

但是我们想想,如果我们拿到了所有非零值,那是不是数组后面的一定是零?所以其实我们之间从慢指针遍历把后续全部修改为零即可,省去了引入新变量。

class Solution {
    public void moveZeroes(int[] nums) {
        int s = 0;
        for(int i = 0; i < nums.length; i++){
           if(nums[i] != 0){
             nums[s++] = nums[i]
           }
        }
        for(s; s < nums.length; s++){
           nums[s] = 0;
        }
    }
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论