https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
func removeDuplicates(nums []int) int {
n := len(nums)
if n<2{
return n
}
low := 0
fast := 0
for fast<n {
if nums[low]==nums[fast]{
fast++
}else{
low++
nums[low] = nums[fast]
fast++
}
}
nums = nums[:low+1]
return low+1
}
思路:
- 思路一,我最先想到的直白点的方法就是,维护一个变量i,然后往后遍历,如果i和i-1是一样的,就如下的方法删除这个变量,如果不一样就i++,直到i>=len(nums)退出循环。这个思路的消耗有点大,不是很推荐。
nums[i] = append(nums[:i],nums[i+1:]...)
- 思路二,就是如图所示的双指针的方式,把不一样的移到数组的前面去,遍历完后只取前面部分的数组。我用这个方法提交了两次,第一次n的部分我都是直接使用len(nums)好像消耗比较大,就把数组长度用n存下来了。然后就双百了。