目录
题目:
示例:
分析:
代码+运行结果:
题目:
示例:
分析:
用两个unordered_map来分别存放每个数字的出现次数和出现的次数这个数,有点绕,比如说有给的数组有两个1,那么第一个map存放的是(1,2),表示1这个数子出现了两次,而第二个map存放的是(2,true),表示有出现次数为2的数字.
我们可以遍历数组,统计每个数字出现的次数放进第一个map中.
然后再遍历第一个map,然后用第二个map来记录以及出现过的出现次数,如果遇到了相同的出现次数,那么就返回false.否则直到遍历完第一个map都没有碰到相同的出现次数,则返回true.
代码+运行结果:
class Solution {
public:
bool uniqueOccurrences(vector<int>& arr) {
unordered_map<int,int>m1;
unordered_map<int,bool>m2;
for(int a:arr) m1[a]++;
for(pair<int,int>p:m1){
if(m2.find(p.second)!=m2.end()) return false;
m2[p.second]=true;
}
return true;
}
};