模版题-动态规划-最长连续递增序列

管理员
- 确定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 ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧