题目
代码实现:
func removeDuplicates(nums []int) int {
slow, fast := 1, 2
if len(nums) <= 2{
return len(nums)
}
for fast < len(nums) {
if nums[fast] != nums[slow-1] {
slow++
nums[slow] = nums[fast]
}
fast++
}
return slow + 1
}
解题思路:由于题目中规定每个元素最多出现两次。因此,应检查快指针指向的元素和慢指针指针所指向单元的前一个元素是否相等(保证快慢指针之间最多空一个元素)。相等则不更新慢指针,只更新快指针;不相等时,先将慢指针后移一位,再将快指针指向的元素覆写入慢指针指向的单元,最后更新快指针。