Menu
CoddyTech

Find Minimum in Rotated Sorted Array

Lista różnych liczb całkowitych została posortowana rosnąco, a następnie obrócona: pewna liczba elementów, być może zero, została przeniesiona z początku na koniec w tej samej kolejności. Na przykład obrót [2, 5, 9, 11, 13, 15, 17] o 3 daje [11, 13, 15, 17, 2, 5, 9]. Otrzymujesz obróconą listę nums. Zwróć jej najmniejszą wartość w czasie O(log n).

Funkcja

findMin(nums: integer-array) → integer
numsinteger-array
obrócona, posortowana lista różnych liczb całkowitych
Zwracainteger
najmniejsza wartość w nums

Ograniczenia

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Wszystkie wartości w nums są różne.
  • nums jest rosnącą listą obróconą o pewną wartość k, gdzie 0 ≤ k < nums.length; k = 0 oznacza, że lista nie jest obrócona.

Przykłady

Wejście
nums = [11, 13, 15, 17, 2, 5, 9]
Wyjście
2
Wyjaśnienie
Wartości rosną od 11 do 17, a następnie spadają do 2, gdzie zaczyna się drugi przebieg. Wyszukiwanie widzi 17 > 9 pod indeksem 3, więc minimum znajduje się na prawo od niego; następnie 5 ≤ 9 i 2 ≤ 5 cofają hi, aż zakres obejmuje tylko indeks 4, pod którym znajduje się 2.

lock icon+17 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy potrafisz zwrócić k-tą najmniejszą wartość z nums w czasie O(log n), nie sortując jej?

Zresetuj kod
def findMin(nums):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

2