Menu
CoddyTech

Longest Increasing Subsequence

Kamu mendapatkan list bilangan bulat nums. Subsekuens mempertahankan beberapa elemen dalam urutan aslinya dan membuang sisanya; elemen yang dipertahankan tidak harus bersebelahan. Kembalikan panjang subsekuens terpanjang dengan nilai yang meningkat secara ketat dari kiri ke kanan. Dua nilai yang sama secara berurutan tidak dihitung sebagai meningkat.

Fungsi

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
daftar bilangan bulat untuk dipilih
Mengembalikaninteger
panjang subsekuens meningkat ketat terpanjang

Batasan

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

Contoh

Input
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Output
4
Penjelasan
1, 2, 5, 9 terus meningkat, begitu juga 1, 2, 5, 7 dan 1, 2, 4, 7: panjangnya 4. Tidak ada pilihan lima nilai yang terus meningkat.
challenge icon

Pertanyaan lanjutan

Bisakah kamu mengembalikan salah satu subsekuens menaik terpanjang itu sendiri, beserta panjangnya, dan tetap berjalan dalam waktu O(n log n)?

Reset kode
def lengthOfLIS(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

4