JS-移动零

版权声明:本文为博主原创文章,未经博主允许不得转载,没关注点个关注哦 https://blog.csdn.net/qq_37288477/article/details/84704284

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

示例

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
首先循环这个数组,将数组中所有不是0的数字,拿出来放到数组前面
  let k = 0;
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
            nums[k++] = nums[i];
        }
    }
因为要保持原数组非零元素的相对顺序,所以每当遇到一个不为0的变量都要进行复制!
最后遍历结束,那么会有K个不为0的变量,随后的nums.length-K的长度都是0
下面是详细代码
var moveZeroes = function(nums) {
    let k = 0;
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
            nums[k++] = nums[i];
        }
    }
    for (let j = k; j < nums.length; j++) {
        nums[j] = 0;
    }
    return nums
};

猜你喜欢

转载自blog.csdn.net/qq_37288477/article/details/84704284