删除有序数组中的重复项

54 阅读1分钟

思路:

用两个指针,一个指向当前不重复的最大值,一个指向扫描的最新位置。术语叫,“快慢指针法”

func removeDuplicates(nums []int) int {
	if len(nums) < 1 {
		return 0
	}
	head, cur := 0, 1
	val := nums[head]
	//for cur < len(nums)-1 { //注意,这里是<len!
	for cur < len(nums) {
		if nums[cur] > val {
			head++
			val = nums[cur]
			nums[head] = val
		}
		cur++
	}
	return head + 1
}