模版题-动态规划-最长连续递增序列
- 确定dp数组含义
- 确定dp递推公式 ( 状态转移 )
- 思考如何初始化
- 思考如何遍历填值
```python
class Solution:
# 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
# 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,
# 如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,
# 那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。
def findLengthOfLCIS(self, nums: List[int]) -> int:
# 非常典型的动态规划可解的问题
n = len( nums )
if n == 0 or n == 1: return n
# dp[ i ]表示以nums[i]结尾时,最长连续递增子序列长度
dp = [ 1 for _ in range( n ) ]
ans = 1
for i in range( 1, n ):
if nums[ i ] > nums[ i - 1 ]: dp[ i ] += dp[ i - 1 ]
if dp[ i ] > ans: ans = dp[ i ]
return ans
```