概述
典型例题
- 力扣–697
参考题解:
class Solution {
public int findShortestSubArray(int[] nums) {
//定义一个Map,Key为数组中的值,Value为一个数组,数组的第一个元素为Key出现的次数,第二个元素为Key第一次出现的位置,第三个元素为Key最后一次出现的位置。
Map<Integer,int[]> map = new HashMap<Integer,int[]>();
int n = nums.length;
//遍历数组,将每一个元素出现的次数、第一次出现的位置、最后一次出现的位置记录下来
for(int i = 0;i<n;i++){
if(map.containsKey(nums[i])){
map.get(nums[i])[0]++;
map.get(nums[i])[2] = i;
}else{
map.put(nums[i],new int[]{1,i,i});
}
}
int maxNum = 0;
int minLen = 0;
//遍历Map,寻找出现最多次数的Key,若Key出现的次数相同,则选择长度较短的。
for(Map.Entry<Integer, int[]> entry : map.entrySet()){
int[] temp = entry.getValue();
if(temp[0] > maxNum){
maxNum = temp[0];
minLen = temp[2]-temp[1]+1;
}else if(temp[0] == maxNum){
if(minLen > temp[2]- temp[1]+1){
minLen = temp[2]-temp[1]+1;
}
}
}
return minLen;
}
}
总结
- HashMap<K, V>中K,V实际上是对象,一些常见的基本类型可以使用它们的包装类。
基本类型 | 引用类型 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
在697题中,V使用int[],这个很不常见!
- 遍历哈希表的方式有以下三种主流方式:
// Iterating entries using a For Each loop
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
// Iterating key
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
// Iterating value
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
其他方式参考Java中遍历HashMap的五种方式
最后
以上就是羞涩冥王星为你收集整理的哈希表刷题总结典型例题总结的全部内容,希望文章能够帮你解决哈希表刷题总结典型例题总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复