📅  最后修改于: 2023-12-03 15:40:02.795000             🧑  作者: Mango
在一个给定数组中,找出恰好重复 k 次的最大元素。如果不存在,则返回 -1。
我们可以用一个字典来记录数组中每个元素的出现次数,然后再遍历一次字典,找出恰好重复 k 次的最大元素。
def find_max_k_times(nums, k):
d = {}
for num in nums:
if num in d:
d[num] += 1
else:
d[num] = 1
max_num = -1
for num, count in d.items():
if count == k and num > max_num:
max_num = num
return max_num
>>> find_max_k_times([1, 2, 3, 4, 4, 5, 5, 5, 6], 2)
5
>>> find_max_k_times([1, 2, 3, 4, 4, 5, 5, 5, 6], 3)
-1
时间复杂度:O(n),其中 n 是数组的长度。需要遍历数组和字典各一次。
空间复杂度:O(m),其中 m 是数组中不同元素的个数。需要用一个字典来存储每个元素的出现次数。