Menu
CoddyTech

Longest Increasing Subsequence

Du erhältst eine Liste von Ganzzahlen nums. Eine Teilsequenz behält einige der Elemente in ihrer ursprünglichen Reihenfolge bei und lässt die übrigen weg; die behaltenen Elemente müssen nicht direkt nebeneinanderstehen. Gib die Länge der längsten Teilsequenz zurück, deren Werte von links nach rechts streng ansteigen. Zwei gleiche aufeinanderfolgende Werte gelten nicht als ansteigend.

Funktion

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
die Liste der Ganzzahlen, aus der ausgewählt werden soll
Gibt zurückinteger
die Länge der längsten streng monoton steigenden Teilfolge

Einschränkungen

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

Beispiele

Eingabe
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Ausgabe
4
Erklärung
1, 2, 5, 9 ergeben eine aufsteigende Teilfolge der Länge 4, ebenso 1, 2, 5, 7 und 1, 2, 4, 7. Keine Auswahl von fünf Werten steigt weiter an, also lautet die Antwort 4.

lock icon+20 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du eine längste aufsteigende Teilsequenz selbst zurückgeben, nicht nur ihre Länge, und trotzdem in O(n log n)-Zeit laufen?

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

Fall 1

Fall 2

Fall 3

Eingabe

nums = [3, 1, 8, 2, 5, 9, 4, 7]

Erwartet

4