[LeetCode] 26. Remove Duplicates from Sorted Array (JS)

[LeetCode] 26. Remove Duplicates from Sorted Array (JS)

題目

給定一個整數陣列 nums ,要求刪除重複項,並且元素的相對順序應保持相同,最後回傳 nums 中唯一元素的數量。

需要注意的是題目要求 in-place,所以不能新增其他的陣列來保存結果。

這題解法和 [LeetCode] 27. Remove Element (JS) 差不多,不過判斷式需要修改一下。

解法

  1. 使用 pointer 來遍歷陣列中的每一個元素。
  2. 檢查 nums 中第一次出現 nums[index] 這個數的索引是否等於當前遍歷到的索引
    • 是:這個數之前沒出現過,可以保留,把這個元素放到 nums[pointer],然後移動 pointer
    • 否:這個數之前已經出現過,需刪除。
  3. 遍歷完陣列後,pointer 的位置就是新陣列的長度,即去除重複的元素個數。
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    let pointer = 0
    for (let index = 0; index < nums.length; index++) {
        if (nums.findIndex(i => i === nums[index]) === index) {
            nums[pointer] = nums[index]
            pointer++
        }
    }
    return pointer
};

送出時只會檢查 nums 前 n 個元素是否符合題目需求(n = 你最後回傳的個數)

guest

0 評論
內聯回饋
查看全部評論