Day6-删除有序数组中的重复项
🔗 LeetCode 26 - Remove Duplicates from Sorted Array
📌 题目描述
给你一个 升序排列 的数组 nums
,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 O(1) 额外空间的条件下原地修改输入数组。
示例:
1 | 输入: nums = [1,1,2] |
💡 解题思路
使用 双指针:
slow
指针表示当前处理的唯一元素下标;fast
指针遍历数组,当遇到一个与nums[slow]
不同的元素时,将其赋值给nums[slow + 1]
,然后slow
前进一步。
遍历结束后,
slow + 1
就是新数组的长度。时间复杂度:O(n)
空间复杂度:O(1)
✅ JavaScript 实现
1 | var removeDuplicates = function(nums) { |
🧠 思考拓展
- 如果要求每个元素最多出现两次怎么办?(参考 LeetCode 80)
- 这道题为什么必须是原地修改?有什么实际应用场景?