力扣链接:https://leetcode-cn.com/probl...
解题思路:
- 题目中数组为升序数组,升序这个前提保证了相同的元素一定是相邻的
- 要原地删除,就不能变换位置或者借用临时空间
- 要保证元素的相对位置不变化
在数组解题中,快慢指针是经常会用到的解法,首先使用一个慢指针指向数组的开头,快指针指向慢指针的下一个位置,快指针开始遍历,若遇见与慢指针相等的数字,则将快指针继续遍历,直到遇到第一个不相等的数字,将该值替换慢指针的下一个位置,同时慢指针右移一位,依次循环,最后返回数组长度时注意加1,因为慢指针下标从0开始
func removeDuplicates(nums []int) int {
lower := 0
for fast := 1; fast < len(nums); fast++ {
if nums[fast] == nums[lower] {
continue
}
nums[lower+1] = nums[fast]
lower++
}
return lower + 1
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。