题目描述
给你一个整数数组
arr
,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回
true
;否则返回false
。
示例
输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。
思路
利用两个map,第一个map记录每个数出现的次数,第二个map记录是否有数出现的次数重复,使用map的好处是不用像数组那样提前申请内存,比较灵活,内存浪费较少。
bool uniqueOccurrences(vector<int>& arr) {
map<int, int> count;
map<int, int> number;
for (int i = 0; i < arr.size(); i++)
{
count[arr[i]]++;
}
for (auto iter = count.begin(); iter != count.end(); iter++)
{
number[iter->second]++;
if (number[iter->second] > 1)
{
return false;
}
}
return true;
}