最长升序列 DP
Posted missidiot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长升序列 DP相关的知识,希望对你有一定的参考价值。
class Solution: def lengthOfLIS(self,nums): if not nums:return 0 #边界处理 dp = [1 for _ in range(len(nums))] #转态的定义,dp[i]表示当前时刻的最长升序列的值 for i in range(len(nums)): #第一次从前向后遍历 for j in range(i): #从0到当前时刻遍历 if nums[j] < nums[i]: #如果出现升序的情况 dp[i] = max(dp[i],dp[j]+1) #状态转移为当前时刻与之前时刻+1的最大值作为当前的状态 print(dp) return max(dp) if __name__ == ‘__main__‘: solution = Solution() nums = [10,9,2,5,3,7,101,18] #结果是[2,3,7,101] 长度为4 res = solution.lengthOfLIS(nums) print(‘最长序列:‘,res)
结果:
以上是关于最长升序列 DP的主要内容,如果未能解决你的问题,请参考以下文章