Remove Duplicates From Sorted Array
删除排序数组中的重复项
题目描述
给定一个数组,原地删除重复出现的元素,返回新数组的长度
要求空间复杂度为 O(1)
示例:
输入:[1, 1, 2]
输出:2
解法
方法一:快慢指针
解法很容易,看代码就能理解
时间复杂度:O(n)
空间复杂度:O(1)
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
left := 0
right := 0
for right < len(nums) {
if nums[right] == nums[left] {
right++
} else {
left++
nums[left] = nums[right]
right++
}
}
return left + 1
}
方法二:记录重复数据个数
时间复杂度:O(n)
空间复杂度:O(1)
func removeDuplicates(nums []int) int {
counts := 0
for i := 1; i < len(nums); i++ {
if nums[i] == nums[i-1] {
counts++
} else {
nums[i-counts] = nums[i]
}
}
return len(nums) - counts
}
Last updated
Was this helpful?