Menu
CoddyTech
flag Ar iconالعربيةdown icon

Binary Search

تُعطى قائمة من الأعداد الصحيحة nums مرتبة ترتيبًا تصاعديًا، من دون تكرار أي قيمة، وعدد صحيح target. أَعِد فهرس target في nums، بدءًا من 0، أو -1 إذا لم يكن موجودًا في القائمة. استهدف زمنًا قدره O(log n)، ما يعني أنه لا يمكنك تفحّص كل عنصر.

الدالة

search(nums: integer-array, target: integer) → integer
numsinteger-array
القائمة المرتبة من الأعداد الصحيحة المميزة
targetinteger
القيمة المراد البحث عنها
تُرجعinteger
فهرس target في nums، أو -1 إذا لم يكن موجودًا

القيود

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums مرتبة بترتيب تصاعدي صارم، لذا تظهر كل قيمة مرة واحدة.

أمثلة

المدخلات
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
المخرجات
4
الشرح
قيمة nums[4] هي 9. يبحث البرنامج عند الفهرس 3 (القيمة 4، وهي صغيرة جدًا)، ثم عند الفهرس 5 (القيمة 15، وهي كبيرة جدًا)، ثم عند الفهرس 4، حيث يجد 9.

lock icon+15 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

إذا كان من الممكن أن تحتوي nums على قيم مكررة، فكيف ستُرجع الفهرس الأول لـ target، مع الحفاظ على O(log n)؟

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

الحالة 1

الحالة 2

المدخلات

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

المتوقع

4