在Python中查找重复元素列表的程序
假设我们有一个大小为 n + 1 的元素列表 nums ,它们选自范围 1, 2, …, n。由于我们知道,根据鸽巢原理,必须存在重复项。 我们必须找到这个重复项。这里我们的目标是在O(n)时间和常量空间内查找此项。
因此,如果输入为nums = [2,1,4,3,5,4],则输出将为4
为了解决这个问题,我们将按照以下步骤进行 –
- q:= nums中所有元素的总和
-
n:= nums的大小
-
v:=(n-1)*(n)// 2的下整数
-
返回q-v
示例
让我们看一下以下实现,以获得更好的理解
def solve(nums):
q = sum(nums)
n = len(nums)
v = (n - 1) * (n) // 2
return q - v
nums = [2,1,4,3,5,4]
print(solve(nums))
输入
[2,1,4,3,5,4]
输出
4