Menu
CoddyTech

Find the Duplicate Number

Bạn nhận được một mảng nums gồm n+1 số nguyên, mỗi số nằm trong khoảng từ 1 đến n. Chính xác một giá trị xuất hiện nhiều hơn một lần, có thể xuất hiện nhiều lần, và bạn trả về giá trị đó.

Giải bài toán mà không thay đổi nums và chỉ dùng một lượng bộ nhớ bổ sung hằng số.

Hàm

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 số nguyên, mỗi số nằm trong khoảng từ 1 đến n
Trả vềinteger
giá trị xuất hiện nhiều hơn một lần

Ràng buộc

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Chỉ có đúng một giá trị xuất hiện từ hai lần trở lên; mọi giá trị khác chỉ xuất hiện nhiều nhất một lần.

Ví dụ

Đầu vào
nums = [2, 5, 1, 3, 5, 4]
Đầu ra
5
Giải thích
Ở đây, n bằng 5, và số 5 nằm ở vị trí 1 và 4, nên đáp án là 5. Mọi giá trị khác từ 1 đến 5 đều xuất hiện một lần.
challenge icon

Câu hỏi mở rộng

Tìm kiếm nhị phân trên các giá trị vẫn giữ cả hai quy tắc trong thời gian O(n log n). Bạn có thể giữ chúng trong thời gian O(n) không?

Đặt lại code
def findDuplicate(nums):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Đối số

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

Đầu ra mong đợi

5