1 Star 0 Fork 1

dllearn/geektime-algorithm-learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
f.go 2.04 KB
一键复制 编辑 原始数据 按行查看 历史
dryyun 提交于 2022-04-20 23:18 +08:00 . 0697
package degreeofanarray
// 697. 数组的度
// https://leetcode-cn.com/problems/degree-of-an-array/
func findShortestSubArray(nums []int) int {
ct := make(map[int][2]int, 0) // 每个数字出现的次数,包括开始、结束位置,0 = 次数
degreeMax := 0 // 最大的度
degreeMap := make(map[int]int, 0) // 这个 degree 里出现的最短路径
for i, n := range nums {
o := ct[n]
if o[0] == 0 {
ct[n] = [2]int{o[0] + 1, i}
} else {
ct[n] = [2]int{o[0] + 1, o[1]}
}
degree := o[0] + 1
if degree > degreeMax {
degreeMax = degree
}
l := i - ct[n][1] + 1
if degreeMap[degree] == 0 || l < degreeMap[degree] {
degreeMap[degree] = l
}
}
return degreeMap[degreeMax]
}
func findShortestSubArray2(nums []int) int {
ct := make(map[int][3]int, 0) // 每个数字出现的次数,包括开始、结束位置,0 = 次数
degreeMax := 0 // 最大的度
degreeMap := make(map[int]int, 0) // 这个 degree 里出现的最短路径
for i, n := range nums {
o := ct[n]
if o[0] == 0 {
ct[n] = [3]int{o[0] + 1, i, i}
} else {
ct[n] = [3]int{o[0] + 1, o[1], i}
}
degree := o[0] + 1
if degree > degreeMax {
degreeMax = degree
}
l := ct[n][2] - ct[n][1] + 1
if degreeMap[degree] == 0 || l < degreeMap[degree] {
degreeMap[degree] = l
}
}
return degreeMap[degreeMax]
}
func findShortestSubArray1(nums []int) int {
ct := make(map[int][4]int, 0) // 每个数字出现的次数,包括开始、结束位置,0 = 次数
degreeMax := 0 // 最大的度
degreeMap := make(map[int][]int, 0) // 这个 degree 里出现的所有数字
for i, n := range nums {
o := ct[n]
if o[0] == 0 {
ct[n] = [4]int{o[0] + 1, i, i, 1}
} else {
ct[n] = [4]int{o[0] + 1, o[1], i, i - o[1] + 1}
}
degree := o[0] + 1
if degree > degreeMax {
degreeMax = degree
}
degreeMap[degree] = append(degreeMap[degree], n)
}
res := 0
for _, d := range degreeMap[degreeMax] {
if res == 0 || ct[d][3] < res {
res = ct[d][3]
}
}
return res
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/dllearn/geektime-algorithm-learn.git
git@gitee.com:dllearn/geektime-algorithm-learn.git
dllearn
geektime-algorithm-learn
geektime-algorithm-learn
55fa3f222b36

搜索帮助