697. 数组的度
解题思路

- 首先创建一个IndexMap 键表示元素 值表示一个列表List list存储该元素在数组的所有索引
- 之后再次创建一个map1 针对上面的List 键表示列表的长度 值表示索引的差值
- 遍历indexmap 将所有的list的长度 和 索引的差值存储
- 遍历map1 找到最大的key 那么这个Key就是代表最大list长度 也就是代表出现最多次数的那个元素 然后取出值(代表索引差值 记得加一)
class Solution {public int findShortestSubArray(int[] nums) {Map<Integer,List<Integer>> indexMap = new HashMap<>();for(int i = 0; i < nums.length; i++){int num = nums[i];if(indexMap.containsKey(num)){indexMap.get(num).add(i);}else{List<Integer> indexList = new ArrayList<>();indexList.add(i);indexMap.put(num,indexList);}}Map<Integer,Integer> map1 = new HashMap<>();for(Map.Entry<Integer,List<Integer>> entry:indexMap.entrySet()){int element = entry.getKey();List<Integer> indexes = entry.getValue();if(map1.containsKey(indexes.size())){if(map1.get(indexes.size()) > (indexes.get(indexes.size() - 1) - indexes.get(0))){map1.put(indexes.size(),indexes.get(indexes.size() - 1) - indexes.get(0) + 1);}}else{map1.put(indexes.size(),indexes.get(indexes.size() - 1) - indexes.get(0) + 1);}}int maxV = Integer.MIN_VALUE;for(Map.Entry<Integer,Integer> entry:map1.entrySet()){if(maxV <= entry.getKey()){maxV = entry.getKey();}}return map1.get(maxV);}
}