Menu
CoddyTech

Find Minimum in Rotated Sorted Array

MittelBinäre Suchepython iconjava iconcpp iconc iconjs icon+10

Eine Liste verschiedener Ganzzahlen wurde aufsteigend sortiert und anschließend rotiert: Eine beliebige Anzahl von Elementen, möglicherweise null, wurde vom Anfang genommen und in derselben Reihenfolge ans Ende verschoben. Zum Beispiel wird [2, 5, 9, 11, 13, 15, 17], um 3 rotiert, zu [11, 13, 15, 17, 2, 5, 9]. Du erhältst die rotierte Liste nums. Gib ihren kleinsten Wert in O(log n) Zeit zurück.

Funktion

findMin(nums: integer-array) → integer
numsinteger-array
die rotierte sortierte Liste unterschiedlicher Ganzzahlen
Gibt zurückinteger
der kleinste Wert in nums

Einschränkungen

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Alle Werte in nums sind verschieden.
  • nums ist eine aufsteigend sortierte Liste, die um ein gewisses k rotiert wurde, wobei 0 ≤ k < nums.length gilt; k = 0 lässt sie unrotiert.

Beispiele

Eingabe
nums = [11, 13, 15, 17, 2, 5, 9]
Ausgabe
2
Erklärung
Die Werte steigen von 11 auf 17 und fallen dann auf 2, wo der zweite Durchlauf beginnt. Bei der Suche gilt 17 > 9 an Index 3, also liegt das Minimum rechts davon; dann setzen 5 ≤ 9 und 2 ≤ 5 hi zurück, bis der Bereich nur noch aus Index 4 besteht, der den Wert 2 enthält.

lock icon+17 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du den k-kleinsten Wert von nums in O(log n) Zeit zurückgeben, ohne es zu sortieren?

Code zurücksetzen
def findMin(nums):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

2