Menu
CoddyTech

Find Peak Element

MittelBinäre Suchepython iconjava iconcpp iconc iconjs icon+10

Das Array nums steigt zunächst an und fällt dann ab: Jeder Wert ist größer als der vorherige, bis zu einem bestimmten Index, und jeder Wert nach diesem Index ist kleiner als der vorherige. Einer der beiden Abschnitte kann leer sein, daher kann das Array auch nur ansteigen oder nur abfallen. Der Wert am Wendepunkt ist das Maximum, der einzige Wert, der größer ist als alle seine Nachbarn.

Gib den Index des Maximums in O(log n)-Zeit zurück.

Funktion

findPeakElement(nums: integer-array) → integer
numsinteger-array
die Werte, die bis zu einem einzigen Höchstwert ansteigen und dann wieder abfallen
Gibt zurückinteger
der Index des Maximums

Einschränkungen

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] für jedes gültige i.
  • nums steigt bis zu einem Index strikt an und fällt danach strikt ab, daher gibt es genau einen Gipfel.

Beispiele

Eingabe
nums = [2, 5, 9, 4, 1]
Ausgabe
2
Erklärung
Die Werte steigen über 2, 5 und 9 an und fallen dann über 4 und 1 ab. Der Wendepunkt liegt bei 9, Index 2.
challenge icon

Weiterführende Frage

In einem Raster, in dem keine zwei benachbarten Zellen gleich sind, ist ein Gipfel eine Zelle, die größer ist als ihre bis zu vier Nachbarn. Kannst du einen finden, ohne jede Zelle auszulesen?

Code zurücksetzen
def findPeakElement(nums):
    # Schreibe hier Code

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

2