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
}