📜  找出数字K的频率最大的数组元素(1)

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

找出数字K的频率最大的数组元素

在一个整数数组中,找出出现频率最高的元素,并返回该元素。如果有多个元素的频率相同,则返回最小的那个元素。

算法思路
  1. 建立一个字典,遍历整个数组,统计每个元素的出现次数并记录在字典中。

    nums_dict = {}
    for num in nums:
        if num in nums_dict:
            nums_dict[num] += 1
        else:
            nums_dict[num] = 1
    
  2. 遍历字典,找到出现次数最大的元素,并返回其值。

    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)。