banner
Koresamuel

Koresamuel

Sometimes ever, sometimes never.
github
twitter
email

283. 移動零

题目描述#

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

請注意 ,必須在不複製數組的情況下原地對數組進行操作。

示例 1:

輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]

示例 2:

輸入: nums = [0]
輸出: [0]

提示:

1 <= nums.length <= 10^4
-2^31 <= nums[i] <= 2^31 - 1

思路#

  1. 最簡單的肯定是一次遍歷遇到 0 就放數組最後,否則直接拷貝,但是開闢了新的數組空間
  2. 可以用兩個指針,從左往右遍歷,遇到 0 則拿出來,放到數組末尾,且右指針往左挪一步,否則左往右移動

题解#

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
  let l = 0, r = nums.length;
  while (l < r) {
    if (nums[l] === 0) {
      nums.push(nums.splice(l, 1));
      r--;
    } else {
      l++;
    }
  }
};

题目链接#

移動零

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。