📌  相关文章
📜  国际空间研究组织 | ISRO CS 2018 |问题 78(1)

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

国际空间研究组织(ISRO) CS 2018 | 问题 78

简介

国际空间研究组织(ISRO)是印度政府主管、负责管理该国空间科技计划的机构。ISRO的主要任务是开展空间技术研究和开发并将其用于国家利益。在这项国家任务完成过程中,ISRO吸引了全球的目光,而它主办的竞赛也受到了众多程序员的关注。

ISRO CS 2018

ISRO于2018年6月17日在印度各大城市举行了计算机科学竞赛(ISRO CS 2018)。该竞赛旨在考查参赛者在计算机方面的技术能力和解决问题的能力。

问题 78

本问题是2018年ISRO计算机科学竞赛的一个问题,要求参赛者编写一段代码,该代码能够从一些数字中找出一些重复出现的数字并将它们输出。具体要求如下:

你将会给定一个数字列表,要求编写一个函数 findDuplicates 来找到其中重复出现的数字并将其输出。

函数声明如下:

def findDuplicates(list: List[int]) -> List[int]:

函数参数说明:

  • list: int 类型值的列表,表示一个数字列表,其中的数字范围为 1 到 1000。

函数返回值:

  • 返回一个 int 类型值的列表,该列表包含了所有在输入列表中重复出现的数字,并按照数字从小到大的顺序排列。

例如:

输入: [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]