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