本文最后更新于: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)$。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!