1207. 独一无二的出现次数
大约 2 分钟
---
1207. 独一无二的出现次数
- 标签:数组、哈希表
- 难度:简单
题目链接
题目大意
描述:给定一个整数数组 。
要求:判断数组中每个数字的出现次数是否互不相同。如果是返回 ,否则返回 。
说明:
- 。
- 。
示例:
- 示例 1:
输入:arr = [1,2,2,1,1,3]
输出:true
解释:1 出现 3 次,2 出现 2 次,3 出现 1 次,所有次数互不相同。- 示例 2:
输入:arr = [1,2]
输出:false
解释:1 和 2 各出现 1 次,次数相同。解题思路
思路 1:哈希表
1. 核心思想
用两个哈希表:
- 第一个哈希表统计每个数字出现的次数 。
- 第二个哈希表(或集合)记录出现次数是否出现过。如果某个出现次数已经存在,说明有重复,返回 。
2. 具体步骤
第 1 步:遍历 ,用 统计每个数字的出现次数。
第 2 步:遍历 中的所有值,用集合 记录已经见过的出现次数:
- 如果某个次数已在 中,返回 。
- 否则加入 。
第 3 步:遍历完成后返回 。
3. 结合示例走一遍
统计频率:,,。
检查唯一性:
- 不在 中 →
- 不在 中 →
- 不在 中 →
所有次数唯一,返回 。
思路 1:代码
from collections import Counter
class Solution:
def uniqueOccurrences(self, arr: List[int]) -> bool:
# 统计每个数字的出现次数
freq = Counter(arr)
# 检查次数是否唯一
seen = set()
for cnt in freq.values():
if cnt in seen:
return False
seen.add(cnt)
return True思路 1:复杂度分析
- 时间复杂度:,其中 是数组长度。
- 空间复杂度:,需要存储频率表。