📅  最后修改于: 2023-12-03 14:58:34.335000             🧑  作者: Mango
门 Sudo GATE 2021 测验是一个程序员面试准备的在线测验,第 44 题是其中的一个问题。考生需要编写代码来解决该问题。以下是问题的描述:
给定一个列表 nums
,其中的元素都是非负整数。你的任务是找到该列表中唯一出现一次的数字,并将其返回。
注意:列表中其他出现多次的数字都会成对出现。
输入:
[1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8]
输出:
1
为了找到列表中唯一出现一次的数字,我们可以使用哈希表来记录每个数字的出现次数。遍历整个列表,对于遇到的每个数字,如果哈希表中不存在该数字,则将其添加到哈希表中,并将其值设置为1。否则,将其值递增1。
最后,遍历哈希表,找到值为1的键,并将其返回作为结果。
下面是一个使用 Python 实现的示例代码:
def find_unique_number(nums):
num_count = {}
for num in nums:
if num not in num_count:
num_count[num] = 1
else:
num_count[num] += 1
for num, count in num_count.items():
if count == 1:
return num
该解法的时间复杂度为 O(n),其中 n 是列表的长度。我们需要遍历整个列表来计算每个数字的出现次数,并遍历哈希表来找到唯一出现一次的数字。
空间复杂度为 O(n),哈希表最多需要存储列表中的所有元素,因此空间复杂度与列表的大小成正比。