【LeetCode】最长递增子序列 Java 题解
题目描述
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
复制代码
思路总结
今天的算法题目,需要找到最长严格递增子序列的长度。
采用动态规划的方式解题:dp[i] 的值代表 nums 前 i 个数字的最长子序列长度。初始值 dp[i] 为 1。
然后每次遍历 0 到 i - 1 区间,与 nums[i]比较大小 ,动态更新 dp[i] 的最值。代码如下:
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n * n), 空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/432460cfdaa43f759fb9081aa】。文章转载请联系作者。
评论