697--数组的度(巧用HashMap)
- 对于这种需要多个容器进行操作的,可用巧用Map容器,将数组放入值中。
题目
给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。
题解
`public class SixNineSeven {
public static int findShortestSubArray(int[] nums) {
Map
int n=nums.length;
for(int i=0;i
map.get(nums[i])[0]++;
map.get(nums[i])[2]=i;
}
else {
map.put(nums[i],new int[]{1,i,i});
}
}
int MaxTime=0,MinLen=0;
for(Map.Entry
int [] arr=Map.getValue();
if(arr[0]>MaxTime){
MaxTime=arr[0];
MinLen=arr[2]-arr[1]+1;
}
else if(MaxTime==arr[0]){
if(MinLen>arr[2]-arr[1]+1){
MinLen=arr[2]-arr[1]+1;
}
}
}
return MinLen;
}