1. 题目描述
给定一个数字序列,求其最长上升子序列
1.1. 测试用例
测试用例
int[] nums = {
4,2,4,5,3,7};
预期结果
4, 序列是{
2,4,5,7}
1.2. 函数签名
public int lengthOfLIS(int[] nums){
}
2. 题解
2.1. 动态规划解法
时间复杂度为
O(N^2)
2.1.1. 分析
- 确定状态:dp[i]以nums[i]结尾的最长子序列的长度
- 转移方程: d p [ i ] = m a x { 1 , d p [ j ] + 1 } 0 ≤ j < i 且 n u m s [ i ] ≥ n u m s [ j ] dp[i] = max \{ 1, dp[j] + 1 \} \quad 0 \le j < i 且 nums[i] \ge nums[j] dp[