Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Otrzymujesz listę liczb całkowitych nums posortowaną w kolejności niemalejącej, więc wartości mogą się powtarzać, oraz liczbę całkowitą target. Zwróć listę dwóch indeksów, liczonych od 0: pierwszą i ostatnią pozycję, na której pojawia się target. Jeśli target nie ma na liście, zwróć [-1, -1]. Dąż do złożoności czasowej O(log n).

Funkcja

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
posortowana lista liczb całkowitych, w której wartości mogą się powtarzać
targetinteger
wartość, której należy szukać
Zwracainteger-array
pierwszy i ostatni indeks elementu target lub [-1, -1], jeśli go nie ma

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums jest posortowane w kolejności niemalejącej.

Przykłady

Wejście
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Wyjście
[1, 3]
Wyjaśnienie
Trzy kopie liczby 5 znajdują się pod indeksami 1, 2 i 3, więc ciąg zaczyna się od indeksu 1 i kończy na indeksie 3. Pod indeksem 0 znajduje się 3, a pod indeksem 4 — 8, więc ciąg nie może sięgać dalej.
challenge icon

Pytanie dodatkowe

Czy jeśli ta sama lista otrzymuje tysiące zapytań dotyczących różnych wartości docelowych, jedno wcześniejsze przejście po niej może sprawić, że każde zapytanie będzie szybsze niż O(log n)?

Zresetuj kod
def searchRange(nums, target):
    # Wpisz kod tutaj

Test #1

Test #2

Argumenty

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

Oczekiwany wynik

[1, 3]