给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路:快慢指针
直接在原数组上更改
slow代表新数组的末位
fast代表旧数组末位
判断旧数组元素能否加入新数组
func removeDuplicates(nums []int) int {
if len(nums) <= 2{
return len(nums)
}
slow, fast := 2, 2
// 分别代表两个数组,slow是新数组末位,fast是旧数组
// 判断旧数组能否加入新数组中
for n := len(nums); fast < n; fast++ {
if nums[slow-2] != nums[fast] {
nums[slow] = nums[fast]
slow++
}
}
return slow
}