📅  最后修改于: 2023-12-03 15:10:05.263000             🧑  作者: Mango
在一个整数数组中,找出出现频率最高的元素,并返回该元素。如果有多个元素的频率相同,则返回最小的那个元素。
建立一个字典,遍历整个数组,统计每个元素的出现次数并记录在字典中。
nums_dict = {}
for num in nums:
if num in nums_dict:
nums_dict[num] += 1
else:
nums_dict[num] = 1
遍历字典,找到出现次数最大的元素,并返回其值。
max_count = 0
max_num = None
for num, count in nums_dict.items():
if count > max_count:
max_count = count
max_num = num
return max_num
def find_most_frequent(nums):
nums_dict = {}
for num in nums:
if num in nums_dict:
nums_dict[num] += 1
else:
nums_dict[num] = 1
max_count = 0
max_num = None
for num, count in nums_dict.items():
if count > max_count:
max_count = count
max_num = num
return max_num
>>> nums = [1, 2, 3, 4, 5, 2, 3, 3, 3, 5, 5]
>>> find_most_frequent(nums)
3
>>> nums = [1, 1, 2, 2, 3, 3, 4, 4, 4, 4]
>>> find_most_frequent(nums)
4
假设列表中包含 n 个元素,则遍历整个列表和字典的时间复杂度为O(n)。因此,该算法的时间复杂度为O(n)。
算法中使用了一个字典来存储元素的出现次数,因此空间复杂度为O(n)。