0080.删除有序数组中的重复项 II

方法一:双指针

时间复杂度 $O(n)$,空间复杂度 $O(1)$。

func removeDuplicates(nums []int) int {
	p, p1, p2 := 0, 0, 0
	for p2 < len(nums) {
		for p2 < len(nums) && nums[p1] == nums[p2] {
			p2++
		}
		nums[p], p = nums[p1], p+1
		if p2-p1 >= 2 {
			nums[p], p = nums[p1], p+1
		}
		p1 = p2
	}
	return p
}