(LeetCode 每日一题) 1394. 找出数组中的幸运数 (哈希表)
题目:1394. 找出数组中的幸运数
思路:哈希表,时间复杂度0(n)。
用的是自带的哈希表,实际上可以用数组来替代,会更简单哦
C++版本:
class Solution {
public:int findLucky(vector<int>& arr) {unordered_map<int,int> mp;for(auto x:arr){mp[x]++;}int mx=-1;for(auto x:mp){if(x.first==x.second) mx=max(mx,x.first);}return mx;}
};
JAVA版本:
class Solution {public int findLucky(int[] arr) {Map<Integer,Integer> mp=new HashMap<>();for(var x:arr){mp.merge(x,1,Integer::sum);}int mx=-1;for(Map.Entry<Integer,Integer> x:mp.entrySet()){int key=x.getKey(),val=x.getValue();if(key==val) mx=Math.max(mx,key);}return mx;}
}
Go版本:
func findLucky(arr []int) int {mp:=map[int]int{}for _,x:=range arr {mp[x]++}mx:=-1for key,val:=range mp {if key==val {mx=max(mx,key)}}return mx
}