題目
給定一個整數陣列 nums ,要求刪除重複項,並且元素的相對順序應保持相同,最後回傳 nums 中唯一元素的數量。
需要注意的是題目要求 in-place,所以不能新增其他的陣列來保存結果。
這題解法和 [LeetCode] 27. Remove Element (JS) 差不多,不過判斷式需要修改一下。
解法
- 使用
pointer來遍歷陣列中的每一個元素。 - 檢查 nums 中第一次出現
nums[index]這個數的索引是否等於當前遍歷到的索引- 是:這個數之前沒出現過,可以保留,把這個元素放到
nums[pointer],然後移動pointer。 - 否:這個數之前已經出現過,需刪除。
- 是:這個數之前沒出現過,可以保留,把這個元素放到
- 遍歷完陣列後,
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 = 你最後回傳的個數)
![[LeetCode] 26. Remove Duplicates from Sorted Array (JS) 7 LeetCode Sharing](https://www.may-notes.com/wp-content/uploads/2024/06/LeetCode_Sharing.png)
![[LeetCode] 189. Rotate Array (JS) 1 LeetCode Sharing](https://www.may-notes.com/wp-content/uploads/2024/06/LeetCode_Sharing-150x150.png)