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 مرة واحدة.
challenge icon

سؤال إضافي

يحافظ البحث الثنائي على القيم على كلتا القاعدتين ضمن زمن O(n log n). هل يمكنك الحفاظ عليهما ضمن زمن O(n)؟

إعادة ضبط الشيفرة
def findDuplicate(nums):
    # اكتب الكود هنا

اختبار #1

اختبار #2

وسيط

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

الإخراج المتوقع

5