Const
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
nums
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
输入: nums = [10,9,2,5,3,7,101,18]
nums = [10,9,2,5,3,7,101,18]
输出: 4
4
解释: 最长递增子序列是 [2,3,7,101],因此长度为 4。
输入: nums = [0,1,0,3,2,3]
nums = [0,1,0,3,2,3]
输入: nums = [7,7,7,7,7,7,7]
nums = [7,7,7,7,7,7,7]
输出: 1
1
1 <= nums.length <= 2500
-10^4 <= nums[i] <= 10^4
dp[i] 表示以第i个数字结尾的最长递增子序列的长度 这道题里头dp[i]需要多次更新得到最终的值,它不是一次计算得到的。
我们要判断以第i个数字为结尾的最长递增子序列的长度,我们可以思考: 以第i-1个数字为结尾的最长递增子序列,如果能够让nums[i]接后边,那么dp[i] = dp[i-1] + 1 但是这个思考不够完整,因为第i-1个位置的数字不一定能够被nums[i]接上。所以对于位置i,它还要继续查看是否能够接在i-2,i-3等等位置后边。 因为它有可能是从前面几个状态转移过来的。状态转移不一定是从相邻状态转移过来的
300.最长递增子序列
给你一个整数数组
nums
,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例 1:
输入:
nums = [10,9,2,5,3,7,101,18]
输出:
4
解释: 最长递增子序列是 [2,3,7,101],因此长度为 4。
示例 2:
输入:
nums = [0,1,0,3,2,3]
输出:
4
示例 3:
输入:
nums = [7,7,7,7,7,7,7]
输出:
1
提示:
1 <= nums.length <= 2500
-10^4 <= nums[i] <= 10^4