我的博客

Leetcode weekly contest 156 独一无二的出现次数 Unique Number of Occurrences

目录

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。

如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

代码一:

先排序,然后一次循环统计每个数出现的次数,然后把这些次数放到数组 l 中;再对 l 排序。看 l 中是否有重复出现的数字。

因为排序以后相同的数字一定相邻了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
def uniqueOccurrences(self, arr: List[int]) -> bool:
arr.sort()
l = []
cnt = 1
ln = arr[0]
i = 1
while i < len(arr):
if ln != arr[i]:
l.append(cnt)
cnt = 0
ln = arr[i]
cnt += 1
i += 1
l.append(cnt)
l.sort()
i = 1
while i < len(l):
if l[i] == l[i-1]:
return False
i += 1
return True

评论无需登录,可以匿名,欢迎评论!