Menu
CoddyTech

Find the Duplicate Number

你会得到一个包含 n+1 个整数的数组 nums,每个整数都在 1 到 n 之间。恰好有一个值出现了多次,出现次数可能很多,你要返回这个值。

在不修改 nums 且只使用常量额外内存的情况下解决这个问题。

函数

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 个整数,每个都在 1 到 n 之间
返回值integer
出现多次的值

约束条件

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • 恰好有一个值出现两次或更多次;其他每个值最多出现一次。

示例

输入
nums = [2, 5, 1, 3, 5, 4]
输出
5
解释
这里 n 是 5,5 位于位置 1 和 4,因此答案是 5。1 到 5 中的其他每个值都只出现一次。
challenge icon

进阶

按值进行二分查找会使两条规则都保持在 O(n log n) 时间内。你能让它们保持在 O(n) 时间内吗?

重置代码
def findDuplicate(nums):
    # 在这里编写代码

测试 #1

测试 #2

参数

nums = [2, 5, 1, 3, 5, 4]

预期输出

5