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 }