📅  最后修改于: 2023-12-03 15:28:48.073000             🧑  作者: Mango
这是著名的门|门 IT 2005大赛的第87题,是一道经典的编程题目,旨在考察程序员的算法设计与编程实现能力。
有一个整型数组A,它的元素取值范围在 [1, 10000] 之间,数组长度为n (1 <= n <= 10000)。请你设计一种算法,在O(n)的时间复杂度内,找出数组A中出现次数最多的元素,并输出它的出现次数。
输入文件仅包含一行,为以一个空格分隔的n个整数,表示A中的元素。
输出文件仅包含一行,为一个整数,表示数组A中出现次数最多的元素的出现次数。
1 2 3 4 5 1 1 1 1 1
6
对于这道题,可以使用哈希表来解决,思路如下:
由于哈希表的查询和修改操作的时间复杂度均为O(1),所以整个算法的时间复杂度为O(n)。
代码实现如下:
def find_most_common_element(nums):
table = {}
max_count = 0
most_common_element = None
for num in nums:
if num not in table:
table[num] = 0
table[num] += 1
for key, value in table.items():
if value > max_count:
max_count = value
most_common_element = key
return max_count
nums = list(map(int, input().split()))
result = find_most_common_element(nums)
print(result)
这道题是一道经典的算法题,它考察了程序员的哈希表应用能力和时间复杂度优化能力。对于类似这种需要快速统计出现次数的问题,使用哈希表是一个比较好的解决方案,能够在O(n)的时间复杂度内解决问题。