Menu
CoddyTech

Find the Duplicate Number

n+1 個の整数からなる配列 nums が与えられます。各整数は 1 から n までの範囲にあります。ちょうど 1 つの値が複数回(何度も出現する場合もあります)現れ、その値を返します。

nums を変更せず、追加メモリを定数量だけ使用して解いてください。

関数

findDuplicate(nums: integer-array) → integer
numsinteger-array
それぞれ1からnまでのn+1個の整数
戻り値integer
複数回現れる値

制約

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • ちょうど1つの値が2回以上現れ、それ以外のすべての値は最大1回しか現れません。

例

入力
nums = [2, 5, 1, 3, 5, 4]
出力
5
説明
ここではnは5で、5は位置1と4にあるため、答えは5です。1から5までのその他の値は、それぞれ1回ずつ現れます。

lock icon提出時に隠しテスト+17件

challenge icon

発展問題

値に対する二分探索では、どちらのルールも O(n log n) 時間で保てます。O(n) 時間で保てますか?

コードをリセット
def findDuplicate(nums):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

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

期待値

5