码迷,mamicode.com
首页 > 其他好文 > 详细

76-最长上升子序列

时间:2019-08-22 22:20:05      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:range   一个   动态规划   使用   复杂度   连续   规划   turn   序列   

题目:求一个无序数组中,最长上升子序列。子序列不一定是连续的。

def lengthOfLIS(nums):
    if len(nums)<1:
        return 0
    dp = [1]*len(nums)
    for i in range(len(nums)):
        for j in range(i):
            if nums[i]>nums[j]:
                dp[i] = max(dp[j]+1,dp[i])
    return max(dp)

  注:

使用动态规划的思想,状态方程为:dp[i] = max(dp[j]+1,dp[i])。即当前最长子序列为遍历之前所有元素,比当前元素小的元素的最长子序列的最大值加1。时间复杂度为O(nlog(n))。

76-最长上升子序列

标签:range   一个   动态规划   使用   复杂度   连续   规划   turn   序列   

原文地址:https://www.cnblogs.com/kingshine007/p/11396844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!