每日一练-leetcode
找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。
给你一个整数数组 arr,请你从中找出并返回一个幸运数。
如果数组中存在多个幸运数,只需返回 最大 的那个。
如果数组中不含幸运数,则返回 -1 。

解法:HahsMap
将数组中的数存储完整,然后遍历map表
class Solution {
public int findLucky(int[] arr) {
if(arr.length == 0){
return -1;
}
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i : arr){
map.put(i,map.getOrDefault(i,0)+1);
}
int ans = -1;
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
int key = entry.getKey();
int value = entry.getValue();
if(key == value){
ans = Math.max(ans, key);
}
}
return ans;
}
}
此题中有两个值得注意的点:
1)map.getOrDefault(i,0)此函数要不的到i的值即get(i),要不返回0
2)for(Map.Entry<Integer,Integer> entry:map.entrySet());此方法为遍历map的一种形式<key,vaule>遍历
3)entry.getKey();entry.getValue()
浙公网安备 33010602011771号