📅  最后修改于: 2023-12-03 15:17:49.550000             🧑  作者: Mango
在一组n个整数中,找到在给定范围内出现最多的整数,并输出该整数和其出现次数。本题解将介绍两种算法,分别是暴力枚举和哈希表。
对于每个数,循环判断其是否在给定范围内,并统计出现次数。
def max_num(nums, l, r):
max_count = 0
max_num = None
for num in nums:
if l <= num <= r:
count = nums.count(num)
if count > max_count:
max_count = count
max_num = num
return max_num, max_count
由于嵌套了一个 count
方法,时间复杂度为 $O(n^2)$,在数据量较大时效率较低。
用哈希表统计每个数字出现的次数,再遍历哈希表找到出现次数最多的数字。
def max_num(nums, l, r):
count_map = {}
for num in nums:
if l <= num <= r:
if num in count_map:
count_map[num] += 1
else:
count_map[num] = 1
max_count = 0
max_num = None
for num, count in count_map.items():
if count > max_count:
max_count = count
max_num = num
return max_num, max_count
由于哈希表的插入和查询时间复杂度均为 $O(1)$,所以算法二的时间复杂度为 $O(n)$,在数据量较大时比算法一效率高。