Menu
CoddyTech

Find Peak Element

SedangBinary searchpython iconjava iconcpp iconc iconjs icon+10

array nums naik lalu turun: setiap nilai lebih besar daripada nilai sebelumnya hingga indeks tertentu, dan setiap nilai setelah indeks itu lebih kecil daripada nilai sebelumnya. Salah satu bagian bisa kosong, jadi array hanya bisa naik atau hanya turun. Nilai pada indeks belokan adalah puncaknya, satu-satunya nilai yang lebih besar daripada setiap tetangganya.

Kembalikan indeks puncaknya dalam waktu O(log n).

Fungsi

findPeakElement(nums: integer-array) → integer
numsinteger-array
nilainya naik hingga mencapai satu puncak, lalu turun
Mengembalikaninteger
indeks puncaknya

Batasan

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] untuk setiap i yang valid.
  • nums meningkat secara ketat hingga satu indeks dan menurun secara ketat setelahnya, jadi hanya ada satu puncak.

Contoh

Input
nums = [2, 5, 9, 4, 1]
Output
2
Penjelasan
Nilainya naik melalui 2, 5, dan 9, lalu turun melalui 4 dan 1. Titik baliknya ada di 9, indeks 2.
challenge icon

Pertanyaan lanjutan

Dalam kisi yang tidak memiliki dua sel bertetangga dengan nilai yang sama, puncak adalah sel yang lebih besar daripada hingga empat sel tetangganya. Bisakah kamu menemukannya tanpa membaca setiap sel?

Reset kode
def findPeakElement(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

2