LeetCode 26. 删除有序数组中的重复项

题目描述

🔥 26. 删除有序数组中的重复项

image-20230309214358517

思路分析

我们可以使用双指针法来解决这个问题。具体步骤如下:

  1. 初始化两个指针 precur,其中 pre 指向数组的第一个元素,cur 从第二个元素开始遍历数组。
  2. 如果 nums[cur] 不等于 nums[pre],说明遇到了一个新的元素,将 pre 向前移动一位,并将 nums[cur] 的值赋给 nums[pre]
  3. 遍历数组直到 cur 到达数组末尾。
  4. 最终,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),我们只使用了常数级别的额外空间。

🍏 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2023/20475061
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!