算法挑战9(双指针)

4 阅读1分钟

283.移动零

难度: 简单

题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。


思路:双指针, 每当fast找到一个不是0的数字就就与slow交换值


题解:

var moveZeroes = function(nums) {

    let fast = 0;

    let slow = 0;

    while(fast < nums.length){

        if(nums[fast] !== 0){
            //交换元素
            const temp = nums[fast];//记录

            nums[fast] = nums[slow];

            nums[slow] = temp;

            slow++;
        }

        fast++;
    }
    return nums;
};