26. 删除有序数组中的重复项
2022-09-29 本文已影响0人
王侦
题目地址(26. 删除有序数组中的重复项)
https://leetcode.cn/problems/remove-duplicates-from-sorted-array/
题目描述
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
将最终结果插入 nums 的前 k 个位置后返回 k 。
不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
前置知识
公司
- 暂无
思路
- 双指针
- i索引遍历素有元素
- valid始终指向有效元素的最后一个
关键点
代码
- 语言支持:Go
Go Code:
func removeDuplicates(nums []int) int {
if nums == nil {
return 0
}
valid := 0;
currentValue := nums[0]
n := len(nums)
for i := 1; i < n; i++ {
if nums[i] != currentValue {
currentValue = nums[i]
valid++
nums[valid] = nums[i]
}
}
return valid + 1;
}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
- 空间复杂度: