Menu
CoddyTech

Find Peak Element

تصعد المصفوفة nums ثم تهبط: تكون كل قيمة أكبر من القيمة التي تسبقها حتى فهرسٍ ما، وتكون كل قيمة بعد ذلك الفهرس أصغر من القيمة التي تسبقها. قد يكون أيٌّ من الجزأين فارغًا، لذا قد تصعد المصفوفة فقط أو تهبط فقط. القيمة عند فهرس التحوّل هي القمّة، وهي القيمة الوحيدة الأكبر من جميع جيرانها.

أعِد فهرس القمّة في زمن O(log n).

الدالة

findPeakElement(nums: integer-array) → integer
numsinteger-array
القيم، إذ ترتفع إلى ذروة واحدة ثم تنخفض
تُرجعinteger
فهرس القمة

القيود

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] لكل i صالح.
  • nums تزداد بصرامة حتى فهرس واحد، ثم تتناقص بصرامة بعده، لذا توجد قمة واحدة بالضبط.

أمثلة

المدخلات
nums = [2, 5, 9, 4, 1]
المخرجات
2
الشرح
تزداد القيم عبر 2 و5 و9، ثم تنخفض عبر 4 و1. تقع نقطة التحول عند 9، الفهرس 2.
challenge icon

سؤال إضافي

في شبكة لا تتساوى فيها أي خليتين متجاورتين، تكون القمة خلية أكبر من جيرانها الأربعة على الأكثر. هل يمكنك العثور على قمة دون قراءة كل خلية؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

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

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

2