本文最后更新于:2020年10月28日 晚上

1207. 独一无二的出现次数

给你一个整数数组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

思路与算法

方法一:哈希表

首先使用哈希表记录每个数字的出现次数;随后再利用新的哈希表,统计不同的出现次数的数目。如果不同的出现次数的数目等于1,则返回true,否则返回flase。

class Solution:
    def uniqueOccurrences(self, arr):
        cishu = {}
        for i in arr:
            if i not in cishu:
                cishu[i] = 1
            else:
                cishu[i] += 1
        cishu_d = {}
        for j in cishu:
            if cishu[j] in cishu_d:
                return False
            else:
                cishu_d[cishu[j]] = 1
     	return True

复杂度 分析

  • 时间复杂度:$O(N)$,其中$N$为数组的长度。遍历原始数组需要$O(N)$时间,而遍历中间过程产生的哈希表又需要$O(N)$的时间。
  • 空间复杂度:$O(N)$。