《零基础Go语言算法实战》【题目 7-4】删除数组重复项,使每个元素只出现一次并返回新的长度
给定一个排序数组 array,就地删除重复项,使每个元素只出现一次并返回新的长度。不要为另一个数组分配额外的空间,开发者必须通过使用空间复杂度为 O(1) 的额外内存就地修改输入数组来做到这一点。示例如下。
输入:
array = [5,5,6]
输出:
2
【解答】
① 思路。
本题可以通过希尔排序算法实现。注意本题中数组的删除并不是真的删除,只是将删除
的元素移动到数组后面的空间,然后返回数组实际剩余元素的个数,最终进行判断时会读取
数组剩余元素的个数进行输出。
② Go 语言实现。
package main
import "fmt"
// 删除重复元素
func removeDuplicates(array []int) int {
if len(array) == 0 {
return 0
}
last, finder := 0, 0
for last < len(array)-1 {
for array[finder] == array[last] {
finder++
if finder == len(array) {
return last + 1
}
}
array[last+1] = array[finder]
last++
}
return last + 1
}
func main() {
array := []int{5, 5, 6}
res := removeDuplicates(array)
fmt.Println(res)
}
//$ go run interview7-4.go
//2
标签:last,删除,元素,算法,数组,Go,array,finder From: https://blog.csdn.net/qq_39728668/article/details/145258308