class Solution { public static int findShortestSubArray(int[] nums) { HashMap<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if(map.get(nums[i])==null){ map.put(nums[i],1); } else { int value=map.get(nums[i]); value++; map.put(nums[i],value); } } Set<Integer> integers = map.keySet(); int max=0; for (Integer key:integers){ int value=map.get(key); if(max< value) max=value; // System.out.println("key= "+key+" value= "+value); } // System.out.println("max=" +max); ArrayList<Integer> list = new ArrayList<>(); for (Integer key:integers){ int value=map.get(key); if(max== value) list.add(key); } // System.out.println("list = " +list); int ans=nums.length; for(Integer temp:list){ System.out.println("temp= "+ temp); int len=0; int count=0; int start=0; for (int i = 0; i < nums.length; i++) { if(nums[i]==temp){ if(count==0){ start=i; // System.out.println("start= "+ start); } count++; if(count==max){ len=i-start+1; // System.out.println("len="+len); break; } } } if(ans>len){ ans=len; } } return ans; } }