题目描述:
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
提示:
1 <= arr.length <= 1000
-1000 <= arr[i] <= 1000
示例 1:
输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。
示例 2:
输入:arr = [1,2]
输出:false
示例 3:
输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出:true
C++代码如下:
class Solution {
public:
bool uniqueOccurrences(vector<int>& arr) {
int size=arr.size();
unordered_map<int,int>m;
set<int>s;
for(int i=0;i<size;i++){
m[arr[i]]++;
}
for(auto it : m){
s.insert(it.second);
}
return m.size()==s.size();
}
};
JAVA代码如下:
class Solution {
public boolean uniqueOccurrences(int[] arr) {
HashMap<Integer, Integer> map = new HashMap<>();
HashSet<Integer> set = new HashSet<>();
for (Integer i : arr) {
map.put(i, map.getOrDefault(i, 0) + 1);
}
for (Integer key : map.keySet()) {
set.add(map.get(key));
}
return set.size() == map.size();
}
}
执行结果: