https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/21/
请大家用go解决一下这个问题。
这段代码可以优化成
```golang
func removeDuplicates(nums []int) int {
idx := 0
for i, v := range nums {
if i == 0 {
idx = idx + 1
continue
}
if v != nums[idx-1] {
nums[idx] = v
idx = idx + 1
}
}
return idx
}
```
和你的算法做了下benchmark的比较
```golang
$ go test -bench=".*"
goos: windows
goarch: amd64
Benchmark_solA_1-8 100000000 18.5 ns/op
Benchmark_solB_1-8 50000000 31.3 ns/op
Benchmark_solA_2-8 30000000 58.3 ns/op
Benchmark_solB_2-8 5000000 294 ns/op
PASS
```
solA是上面的程序,solB是你的算法,其实可以看出append操作还是比较耗时间的。
另外,我觉得这个题目不太合适go,毕竟传过来的nums又不一定是原来的nums。
#6
更多评论
```golang
func removeDuplicates(nums []int) int {
p:=0
ct:=0
idx:=0
for i,v:=range nums {
if i==0 {
p = v
ct = ct + 1
idx = idx + 1
continue
}
if v!=p {
nums[idx]=v
ct = ct +1
p = v
idx = idx + 1
}
}
return ct
}
```
#1