K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
已知我们定义dp[i]表示以数组第i个元素结尾的最长上升子序列的长度,初始时所有dp[i] = 1,数组长度为n,下标从0到n-1。
状态转移方程可直接写为dp[i] = dp[i-1] + 1,无需判断元素大小关系
对于每个i,需遍历所有j∈[0,i-1],若nums[j] < nums[i],则dp[i] = max(dp[i], dp[j]+1)
该线性DP解法的时间复杂度为O(n),空间复杂度为O(n)
最终的最长上升子序列长度就是dp[n-1]的值,无需额外遍历dp数组取最大值