博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-300-Longest Increasing Subsequence
阅读量:6102 次
发布时间:2019-06-20

本文共 950 字,大约阅读时间需要 3 分钟。

本质: 找出最长的递增子序列的长度,可以是不连续的。
用一个数组存储 递增子序列,遍历原始数组,每增加一个数,往里添加到对应的顺序,记录他的位置,即为此数组的长度。  成立的理由:每一个数添加以后,都有对应的子序列的长度,将它记录即可,然后最后取一个最长的。

思考: 数组作为记录的作用,可以记录满足条件的数值,index可以作为索引,

可以记录子数组,从中获取子数组的长度, 可以子数组修改子数组,加以覆盖,修改,根据最后一个值判断length。
应用: 判断满足一定条件的子序列的最大长度,用动态数组加以处理。
二分法确定满足条件的位置。  思路: 将满足条件的数值记录在数组,然后每次新数值插入此数组,记录下此时需要的信息。
类似: 二分法查找元素,查找某种情况的子序列。
class Solution:    def lengthOfLIS(self, nums):        length=len(nums)        dp=[0]*length        size=0        for index,num in enumerate(nums):            i,j=0,size            while i!=j:                m=(i+j)//2                if dp[m]
num: j=m else: i=m break dp[i]=num size=max(size,i+1) return sizeif __name__ == '__main__': nums = [10, 9, 2, 5, 3, 7,8,10,14,18,101,18,16,17,18] # nums=[3,1,4,1,5,9,2,6] print(len(nums)) st = Solution() out=st.lengthOfLIS(nums) print(out)

转载地址:http://whiza.baihongyu.com/

你可能感兴趣的文章
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>