📅  最后修改于: 2023-12-03 15:23:04.576000             🧑  作者: Mango
国际空间研究组织(ISRO)是印度政府主管、负责管理该国空间科技计划的机构。ISRO的主要任务是开展空间技术研究和开发并将其用于国家利益。在这项国家任务完成过程中,ISRO吸引了全球的目光,而它主办的竞赛也受到了众多程序员的关注。
ISRO于2018年6月17日在印度各大城市举行了计算机科学竞赛(ISRO CS 2018)。该竞赛旨在考查参赛者在计算机方面的技术能力和解决问题的能力。
本问题是2018年ISRO计算机科学竞赛的一个问题,要求参赛者编写一段代码,该代码能够从一些数字中找出一些重复出现的数字并将它们输出。具体要求如下:
你将会给定一个数字列表,要求编写一个函数 findDuplicates
来找到其中重复出现的数字并将其输出。
函数声明如下:
def findDuplicates(list: List[int]) -> List[int]:
函数参数说明:
list
: int 类型值的列表,表示一个数字列表,其中的数字范围为 1 到 1000。函数返回值:
例如:
输入: [4,3,2,7,8,2,3,1]
输出: [2,3]
该问题可以使用哈希表来解决。首先遍历一遍数组,将每个数字出现的次数存入哈希表。然后再遍历一遍数组,将重复出现的数字存入返回值列表中。
from typing import List
def findDuplicates(list: List[int]) -> List[int]:
hashmap = {}
result = []
for num in list:
if num not in hashmap:
hashmap[num] = 1
else:
hashmap[num] += 1
for num in hashmap:
if hashmap[num] > 1:
result.append(num)
result.sort()
return result
assert findDuplicates([4,3,2,7,8,2,3,1]) == [2, 3]
assert findDuplicates([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == []
assert findDuplicates([1, 1, 1, 1]) == [1]