Menu
CoddyTech

Longest Increasing Subsequence

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

Funktion

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
die Liste der Ganzzahlen, aus denen 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 steigt, und genauso 1, 2, 5, 7 und 1, 2, 4, 7: Länge 4. Keine Auswahl von fünf Werten bleibt steigend.
challenge icon

Weiterführende Frage

Kannst du eine längste aufsteigende Teilsequenz selbst zusammen mit ihrer Länge zurückgeben und trotzdem in O(n log n) Zeit arbeiten?

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

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

4