给你一个整数数组 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         //如果ccnt的元素大于一表示有两个元素出现次数的出现次数相同
10         for(int i = 1;i <= 1000;i++) if(ccnt[i] > 1) return false;
11         return true;
12     }
13 };
02-12 22:01