LeetCode 26. 删除有序数组中的重复项
题目描述
思路分析
我们可以使用双指针法来解决这个问题。具体步骤如下:
- 初始化两个指针
pre
和cur
,其中pre
指向数组的第一个元素,cur
从第二个元素开始遍历数组。- 如果
nums[cur]
不等于nums[pre]
,说明遇到了一个新的元素,将pre
向前移动一位,并将nums[cur]
的值赋给nums[pre]
。- 遍历数组直到
cur
到达数组末尾。- 最终,
pre + 1
即为新数组的长度。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
pre := 0
for cur := 1; cur < len(nums); cur++ {
if nums[cur] != nums[pre] {
pre++
nums[pre] = nums[cur]
}
}
return pre + 1
}
- 时间复杂度:O (N),其中 N 是数组的长度。我们只遍历了一次数组。
- 空间复杂度:O (1),我们只使用了常数级别的额外空间。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用