🥉Easy

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false

示例 1:

  1. 输入:arr = [1,2,2,1,1,3]
  2. 输出:true
  3. 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。

**

示例 2:

  1. 输入:arr = [1,2]
  2. 输出:false

示例 3:

  1. 输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
  2. 输出:true

提示:

  • 1 <= arr.length <= 1000
  • -1000 <= arr[i] <= 1000

    题解

    此题比较简单,就是遍历放到哈希表(数组也行)中,统计次数,然后用set处理,再和之前统计的次数相比,相同为true

我是用数组存储计数的

Python

  1. class Solution:
  2. def uniqueOccurrences(self, arr: List[int]) -> bool:
  3. arr.sort()
  4. count=[1]
  5. for i in range(1,len(arr)):
  6. if arr[i]==arr[i-1]:
  7. count[-1]+=1
  8. else:
  9. count.append(1)
  10. return len(count)==len(list(set(count)))

JavaScript

  1. /**
  2. * @param {number[]} arr
  3. * @return {boolean}
  4. */
  5. var uniqueOccurrences = function(arr) {
  6. arr.sort((a,b)=> {return a-b})
  7. let count=[1]
  8. for(let i=1;i<arr.length;i++){
  9. if (arr[i]===arr[i-1]){
  10. count[count.length-1]+=1
  11. } else {
  12. count.push(1)
  13. }
  14. }
  15. const arrSet = [...new Set(count)]
  16. return arrSet.length === count.length
  17. };

官方题解使用了哈希表

  1. var uniqueOccurrences = function(arr) {
  2. const occur = new Map();
  3. for (const x of arr) {
  4. if (occur.has(x)) {
  5. occur.set(x, occur.get(x) + 1);
  6. } else {
  7. occur.set(x, 1);
  8. }
  9. }
  10. const times = new Set();
  11. for (const [key, value] of occur) {
  12. times.add(value);
  13. }
  14. return times.size === occur.size;
  15. };