📌  相关文章
📜  n 个范围内出现的最大整数 |组 2(1)

📅  最后修改于: 2023-12-03 15:17:49.550000             🧑  作者: Mango

以'n 个范围内出现的最大整数 |组 2'作主题

介绍

在一组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)$,在数据量较大时比算法一效率高。