在一个序列中找出最长的严格递增子序列。本页使用动态规划,逐步填充 dp 数组和 pre 前驱数组,最后回溯得到完整子序列。
时间复杂度:O(n²) | 空间复杂度:O(n)
思路说明:dp[i] 表示以第 i 个元素结尾的最长递增子序列长度。枚举每个前面的元素 j,如果 nums[j] < nums[i],说明可以把 nums[i] 接在以 nums[j] 结尾的子序列后面,此时尝试更新 dp[i]。pre[i] 记录这个子序列中 nums[i] 前面的元素下标,便于最后回溯输出完整子序列。