12345678910111213141516171819202122232425262728293031 |
- func findShortestSubArray(nums []int) int {
- n := len(nums)
- if n <= 1 {
- return n
- }
- max := 0
- var freq [50000]int
- ans := make([]int, 0)
- var beg, end [50000]int
- for i, v := range nums {
- if freq[v] == 0 {
- beg[v] = i
- }
- freq[v]++
- if max < freq[v] {
- max = freq[v]
- ans = []int{v}
- end[v] = i
- } else if max == freq[v] {
- ans = append(ans, v)
- end[v] = i
- }
- }
- max = n
- for _, v := range ans {
- if l := end[v] - beg[v] + 1; l < max {
- max = l
- }
- }
- return max
- }
|