Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

MittelBinäre Suchepython iconjava iconcpp iconc iconjs icon+10

Du erhältst eine Liste von Ganzzahlen nums, die nicht absteigend sortiert ist, sodass ein Wert mehrfach vorkommen kann, sowie eine Ganzzahl target. Gib eine Liste mit zwei Indizes zurück, beginnend bei 0: der ersten und der letzten Position, an der target vorkommt. Falls target nicht in der Liste enthalten ist, gib [-1, -1] zurück. Strebe eine Laufzeit von O(log n) an.

Funktion

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
die sortierte Liste von Ganzzahlen, in der Werte mehrfach vorkommen können
targetinteger
der gesuchte Wert
Gibt zurückinteger-array
der erste und der letzte Index von target oder [-1, -1], falls es fehlt

Einschränkungen

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums ist in nicht absteigender Reihenfolge sortiert.

Beispiele

Eingabe
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Ausgabe
[1, 3]
Erklärung
Die drei Kopien von 5 befinden sich an den Indizes 1, 2 und 3, daher beginnt die Folge bei 1 und endet bei 3. An Index 0 steht 3 und an Index 4 steht 8, daher kann die Folge nicht weiter reichen.
challenge icon

Weiterführende Frage

Wenn für dieselbe Liste Tausende von Abfragen nach verschiedenen Zielwerten gestellt werden, kann ein einziger vorheriger Durchlauf jede Abfrage schneller als O(log n) machen?

Code zurücksetzen
def searchRange(nums, target):
    # Schreibe hier den Code

Test #1

Test #2

Argumente

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

Erwartete Ausgabe

[1, 3]