Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 1009 Bytes

283. 移动零.md

File metadata and controls

48 lines (36 loc) · 1009 Bytes

难度简单840

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

示例:

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

说明:

  1. 必须在原数组上操作,不能拷贝额外的数组。
  2. 尽量减少操作次数。

思路

利用双指针

  1. 如果左右指针都为0,则将右指针右移
  2. 如果左指针为0,则交换指针对应的值

代码

var moveZeroes = function(nums) {
    let len = nums.length, left = 0, right = 1;
    while(left < right && right < len) {
        if (!nums[left] && !nums[right]) {
            right ++
            continue
        } 
        if (!nums[left]) {
            [nums[left], nums[right]] = [nums[right], nums[left]]
        } 
        left ++
        right ++
    }
    return nums
};

复杂度分析

时间复杂度 $O(N)$ 空间复杂度 $O(1)$