283. 移动零

https://leetcode-cn.com/problems/move-zeroes/submissions/

解法一:

逆向思维,将所有非0元素挪到数组前部分即可。以i为界划分非0和0,下标i之前的元素均为非0。用一个游标j一次遍历数组,遇到非0就将其和i处元素交换。

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    let i = 0
    for (let j in nums) {
        if (nums[j]) {  //若非0,i与j位置元素交换,非0区i向前一位
            [nums[i], nums[j]] = [nums[j], nums[i]]
            i++
        }
    }
};

最后更新于