func findShortestSubArray(nums []int) int {
// 使用两个map来寻找这个值,
// 首先map1 是计算的len长度,map2 是计算的首次出现的index
Count,minLength := make(map[int]int),make(map[int]int)
l := len(nums)
maxLen := 1
if l < 2 { // 边界判断。
return l
}
for i,v := range nums {
Count[v]++ // 是计算各个v的出现次数的
if Count[v] == 1 { // 记录第一次出现的i
minLength[v] = i
}else {
dd := i - minLength[v] + 1 // 然后每次都记录长度
if maxLen < Count[v] || maxLen == Count[v] && l > dd {
l = dd // 这个l就是一个记录index差的的指针。
maxLen = Count[v] // 这个maxlen就是总长度最大的指针。
// 这是两个必不可少的指针。 这里就是一边遍历一边比较。
}
}
}
if len(Count) == len(nums) { // 当没有重复的时候返回1,因为map的len等于这个num了嘛。
return 1
}
return l
}