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

Find Minimum in Rotated Sorted Array

قائمة من الأعداد الصحيحة المتميزة رُتبت بترتيب تصاعدي ثم دُوّرت: أُخذ عدد من العناصر، قد يكون صفرًا، من البداية ونُقلت إلى النهاية بالترتيب نفسه. على سبيل المثال، تدوير [2, 5, 9, 11, 13, 15, 17] بمقدار 3 يعطي [11, 13, 15, 17, 2, 5, 9]. تحصل على القائمة المدورة nums. أعد أصغر قيمة فيها في زمن O(log n).

الدالة

findMin(nums: integer-array) → integer
numsinteger-array
القائمة المُدوَّرة المرتبة من أعداد صحيحة متميزة
تُرجعinteger
أصغر قيمة في nums

القيود

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • جميع القيم في nums مختلفة.
  • nums هي قائمة متزايدة دُوِّرت بمقدار ما k حيث 0 ≤ k < nums.length؛ وتبقى دون تدوير عندما تكون k = 0.

أمثلة

المدخلات
nums = [11, 13, 15, 17, 2, 5, 9]
المخرجات
2
الشرح
ترتفع القيم من 11 إلى 17 ثم تنخفض إلى 2، حيث يبدأ التكرار الثاني. ترى عملية البحث أن 17 > 9 عند الفهرس 3، لذا فإن القيمة الدنيا تقع إلى يمينه؛ ثم تؤدي 5 ≤ 9 و2 ≤ 5 إلى إرجاع hi إلى الخلف حتى يصبح النطاق مقتصرًا على الفهرس 4، الذي يحتوي على 2.

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

challenge icon

سؤال إضافي

هل يمكنك إرجاع القيمة الأصغر ذات الترتيب k في nums خلال زمن O(log n)، من دون ترتيبها؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [11, 13, 15, 17, 2, 5, 9]

المتوقع

2