|  | @@ -0,0 +1,31 @@
 | 
	
		
			
				|  |  | +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
 | 
	
		
			
				|  |  | +}
 |