📅  最后修改于: 2023-12-03 14:58:19.341000             🧑  作者: Mango
本题是2010年GATE计算机科学考试中的一道题目。以下是题目、代码和解决方法。
给定一个长度为n的数组A。元素的值可以是1到n之间的整数(包含1和n)。其中一个元素在数组中出现多次,而另一个元素没有出现。编写一个函数来找到没有出现的元素。
具体而言,函数应接受一个整数n和一个长度为n-1的数组A,数组中的元素可以重复。函数应返回一个数组,其中包含一个元素,它没有出现在A中。代码应具有O(n)时间复杂度。
以下是函数签名:
def find_missing(n: int, A: List[int]) -> List[int]:
以下是输入和输出示例:
输入:
n = 5
A = [1, 2, 3, 5, 5]
输出:
[4]
from typing import List
def find_missing(n: int, A: List[int]) -> List[int]:
n_sum = n*(n+1)//2
A_sum = sum(A)
missing = n_sum - A_sum
return [missing]
此题中,元素的值可以是1到n之间的整数,而且其中一个元素出现多次,另一个元素没有出现。因此,可以采用“求和”的思路来解决这个问题。
思路如下:
此解决方法的时间复杂度为O(n)。