Menu
CoddyTech

Find the Duplicate Number

מקבלים מערך nums של n+1 מספרים שלמים, שכל אחד מהם בין 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 מופיע פעם אחת.

lock icon+17 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

החיפוש הבינארי בערכים שומר על שתי הכללים בזמן O(n log n). האם תוכל לשמור עליהם בזמן O(n)?

איפוס הקוד
def findDuplicate(nums):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

קלט

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

צפוי

5