编程之美 最长递增子序列 LIS
1. O(N*logN) 解法
先对序列排序, 然后寻找两个序列的最长公共子序列
2. O(N*N) 的动态规划解法
令 LIST[i] 表示以 i 为结尾的最长子序列的长度, 那么 LIST[J] = MAX(LIST[I]+1), J > I
3. O(N*logN) 的动态规划解法 (需要 O(N) 的空间复杂度)
设置一个数组 B[], 记录 B[] 记录长度为 i 的 LIS 的末尾元素, 向 B 中插入数据使用二分插入, 即可实现 N*logN 的时间复杂度
方法很是奇妙
编程之美 最长递增子序列 LIS的更多相关文章
- 2.16 最长递增子序列 LIS
[本文链接] http://www.cnblogs.com/hellogiser/p/dp-of-LIS.html [分析] 思路一:设序列为A,对序列进行排序后得到B,那么A的最长递增子序列LIS就 ...
- 动态规划(DP),最长递增子序列(LIS)
题目链接:http://poj.org/problem?id=2533 解题报告: 状态转移方程: dp[i]表示以a[i]为结尾的LIS长度 状态转移方程: dp[0]=1; dp[i]=max(d ...
- 最长回文子序列LCS,最长递增子序列LIS及相互联系
最长公共子序列LCS Lintcode 77. 最长公共子序列 LCS问题是求两个字符串的最长公共子序列 \[ dp[i][j] = \left\{\begin{matrix} & max(d ...
- 一个数组求其最长递增子序列(LIS)
一个数组求其最长递增子序列(LIS) 例如数组{3, 1, 4, 2, 3, 9, 4, 6}的LIS是{1, 2, 3, 4, 6},长度为5,假设数组长度为N,求数组的LIS的长度, 需要一个额外 ...
- 算法面试题 之 最长递增子序列 LIS
找出最长递增序列 O(NlogN)(不一定连续!) 参考 http://www.felix021.com/blog/read.php?1587%E5%8F%AF%E6%98%AF%E8%BF%9E%E ...
- 算法之动态规划(最长递增子序列——LIS)
最长递增子序列是动态规划中最经典的问题之一,我们从讨论这个问题开始,循序渐进的了解动态规划的相关知识要点. 在一个已知的序列 {a1, a 2,...an}中,取出若干数组成新的序列{ai1, ai ...
- 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已 ...
- 动态规划 - 最长递增子序列(LIS)
最长递增子序列是动态规划中经典的问题,详细如下: 在一个已知的序列{a1,a2,...,an}中,取出若干数组组成新的序列{ai1,ai2,...,aim},其中下标i1,i2,...,im保持递增, ...
- 最长递增子序列LIS再谈
DP模型: d(i) 以第 i 个元素结尾的最长递增子序列的长度. 那么就有 d(i) = max(d(j)) + 1;(j<i&&a[j]<a[i]),答案 max(d( ...
随机推荐
- Hadoop集群+Spark集群搭建(一篇文章就够了)
本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢) 一.准备 1.1 软件版本 Ub ...
- 【APP接口开发】php获取body数据
PHP获取接口数据: $postStr = file_get_contents("php://input");//因为很多都设置了register_globals禁止,不能用$GL ...
- js open窗口父子窗口操作
http://zhidao.baidu.com/question/61358246.html?an=0&si=1 js open窗口父子窗口操作 父窗口js代码: function ...
- webqq协议分析之~~~~验证是否需要验证码
对于小黄鸡我想大家(喜欢在群里bb的人...)肯定一点都不陌生,那段时间大家在群里对小鸡是各种调戏啊,都有点不忍直视.那时我便想能不能自己也做个呢,后来想想还是算了吧,自己技术太渣渣,然后就不了了之. ...
- Android中的Layout_weight终极研究
以前在做UI布局时,也经常用Layout_weight属性,有时会遇到莫名其妙的布局问题,但总没研究懂.一直想做深入分析,但总是没耐心.遇到问题就找替代方法解决,但终非长久之计.这次下决心给它弄透! ...
- VS2010 DLL库生成和使用
一.生成dll文件(VS2010 Win32 程序) CreateDll.h // 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法.此 DLL 中的所有文件都是用命令行上定义的 ...
- Linux系统里如何彻底的清空终端屏幕?
Linux用户,特别是Ubuntu或CentOS用户,基本上都习惯使用clear命令或Ctrl+L组合快捷键来清空终端屏幕.但是,这样做其实并不是真正的清空屏幕,它只是给人一种错觉,让人以为屏幕清空了 ...
- servlet响应解析
response对象可以设置一些响应信息 1)设置状态码 response.setStatus(int) 2)设置响应头信息.定时刷新或者间隔 n 秒后跳转 response.setHeader(&q ...
- unity, 导出对象到另一个项目
----更新(2015-6-26): 今天又试了一下,有时候prefabs不用导出直接拷贝过去也能用,但有时候不行.还不太清楚原因. ----旧帖: 一,正确做法: 一个对象包括资源和Hierarch ...
- Atititjs javascript异常处理机制与java异常的转换.js exception process
Atititjs javascript异常处理机制与java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw err ...