自认为这个解法是比代码随想录中哪个i-1
要容易理解的。
42.最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。
连续递增的子序列 可以由两个下标 l
和 r
(l < r
)确定,如果对于每个 l <= i < r
,都有 nums[i] < nums[i + 1]
,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]]
就是连续递增子序列。
所以本题目和上面题目的唯一区别是:本题要求子序列是连续递增序列
示例 1:
输入: nums = [1,3,5,4,7]
输出: 3
解释: 最长连续递增序列是 [1,3,5]
, 长度为3。
尽管 [1,3,5,7]
也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。
解法
因为与 300. 最长递增子序列-最长上升子序列 题目相似,所以解法也就相似。
dp数组含义:
dp[i]
表示以nums[i]
结尾的最长连续递增的子序列
同样,要注意是以nums[i]
结尾,并不是nums[0...i]
的最长递增子序列,这两者区别非常大
初始化:
初始化为1 因为最小的递增序列就是num[i]
本身
递推公式:
本题要求子序列是连续递增序列的。
所以我们只看前面一个数(pre)是否小于当前数(cur),就可以了,不用像300. 最长递增子序列-最长上升子序列 一样,遍历之前每个数。
1 | class Solution { |