删除数组中的重复项
题目描述
给你一个升序排列的数组nums
,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的相对顺序应该保持一致 。
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums
的第一部分。更规范地说,如果在删除重复项之后有 k
个元素,那么 nums
的前 k
个元素应该保存最终结果。
将最终结果插入 nums
的前 k
个位置后返回 k
。
不要使用额外的空间,你必须在原地修改输入数组并在使用 O(1)
额外空间的条件下完成。
示例1:
|
|
示例 2:
|
|
思路
题目描述
- 升序数组去重
- 返回数组长度
移除数组中元素,考虑使用双指针法。慢指针移动的条件应为nums[fastIndex-1] != nums[fastIndex]
,即该元素和之前的元素不同,然后将快指针指向的值赋给慢指针指向的值。
注意
- 应该保证数组有序,这样的话重复元素就是连续的。否则可能会重失败。
- 应使快慢指针都从
1
开始,若从0
开始,则会导致nums[fastIndex-1]
会导致数组越界
代码
Go
|
|