给你一个整数数组 arr
,请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的,就返回 true
;否则返回 false
。
示例 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
提示:
1 <= arr.length <= 1000
-1000 <= arr[i] <= 1000
思路:比较元素和元素之间的出现次数的出现次数是否相同,第一次想还是有点绕的hhhh,人菜就要多刷题
1 class Solution { 2 public: 3 int cnt[2020],ccnt[1010]; 4 bool uniqueOccurrences(vector<int>& arr) { 5 //将每个数字的出现次数统计出来 6 for(auto v : arr) ++cnt[v + 1000]; 7 //统计出现次数的出现次数 8 for(int i = 0;i <= 2000;i++) ++ccnt[cnt[i]]; 9 cout << ccnt[1] << ccnt[2] << ccnt[3] << endl; 10 //如果ccnt的元素大于一表示除了0以外有两个或者两个元素以上元素出现次数的次数相同 11 for(int i = 1;i <= 1000;i++) if(ccnt[i] > 1) return false; 12 return true; 13 } 14 };