Menu
CoddyTech

Longest Increasing Subsequence

Bạn nhận được một danh sách số nguyên nums. Một dãy con giữ lại một số phần tử theo thứ tự ban đầu và bỏ các phần tử còn lại; các phần tử được giữ lại không cần nằm cạnh nhau. Hãy trả về độ dài của dãy con dài nhất có các giá trị tăng nghiêm ngặt từ trái sang phải. Hai giá trị bằng nhau liên tiếp không được tính là tăng.

Hàm

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
Danh sách số nguyên để chọn
Trả vềinteger
độ dài của dãy con tăng nghiêm ngặt dài nhất

Ràng buộc

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

Ví dụ

Đầu vào
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Đầu ra
4
Giải thích
1, 2, 5, 9 tăng dần, và 1, 2, 5, 7 cũng vậy, cả 1, 2, 4, 7 nữa: độ dài là 4. Không có cách chọn năm giá trị nào mà vẫn tăng dần.
challenge icon

Câu hỏi mở rộng

Bạn có thể trả về một dãy con tăng dài nhất, cùng với độ dài của nó, mà vẫn chạy trong thời gian O(n log n) không?

Đặt lại code
def lengthOfLIS(nums):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

4