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

Search in Rotated Sorted Array

تم ترتيب قائمة من الأعداد الصحيحة المتميزة بترتيب تصاعدي، ثم دُوّرت: نُقل عدد من العناصر، قد يكون صفرًا، من المقدمة إلى النهاية بالترتيب نفسه. على سبيل المثال، تدوير [2, 5, 8, 11, 15, 19, 23] بمقدار 4 ينتج عنه [15, 19, 23, 2, 5, 8, 11]. تُعطى القائمة المدورة 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 ≤ 5000
  • -104 ≤ nums[i], target ≤ 104
  • جميع القيم في nums مختلفة.
  • nums قائمة متزايدة دُوِّرت بمقدار ما k بحيث 0 ≤ k < nums.length؛ وإذا كان k = 0 فإنها تظل دون تدوير.

أمثلة

المدخلات
nums = [15, 19, 23, 2, 5, 8, 11]target = 5
المخرجات
4
الشرح
يقع 5 عند الفهرس 4. ويحمل العنصر الأوسط الأول، عند الفهرس 3، القيمة 2، لذا فإن النصف الأيمن [2, 5, 8, 11] هو المرتب، وتقع 5 بين 2 و11. ويحمل العنصر الأوسط التالي، عند الفهرس 5، القيمة 8؛ ويحتوي الجزء الأيسر المرتب [5, 8] على 5، مما يؤدي إلى الفهرس 4.

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

challenge icon

سؤال إضافي

إذا كان من الممكن أن تحتوي nums على قيم مكررة، فلا يمكن لأي خوارزمية أن تضمن O(log n). هل يمكنك إثبات ذلك؟ أنشئ قائمة مُدارة من القيم 1، تتضمن قيمة 0 واحدة مخفية، بحيث يتعين على أي عملية بحث عن 0 قراءة كل عنصر.

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [15, 19, 23, 2, 5, 8, 11]
target = 5

المتوقع

4