一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).

 

思路:dp,即求N个序列的这个状态可以由K(1<=k<=n-1)个序列的状态推导得出

dp[n]:表示以第n个元素结尾的子序列的最长序列长度

if a[n]>a[k] dp[n] = max{1,1 + dp[k]}  (1<=k<=n-1)

解法一:O(n2)

N2的时间复杂度关键在于每次求第N个元素的时候都遍历一遍前N-1个元素,然后取最大值。

解法二:O(nlgn)

nlgn的快速之处在于不是每次去遍历前N-1个元素,而是从一开始就维护一个栈,这个栈中保存的是当前序列的“伪最长子序列”。

举例:原序列为1,5,8,3,6,7

栈为1,5,8,此时读到3,用3替换5,得到1,3,8;

再读6,用6替换8,得到1,3,6;

再读7,得到最终栈为1,3,6,7。

最长递增子序列为长度4。

可以发现栈中的序列不一定是正确的,但是长度肯定是正确的。

因为维护栈的策略是(假设栈顶元素是top, 新元素是temp)

if temp > top, temp入栈

if temp <= top, 首先找出第一个大于等于temp的栈中元素,并用temp替代它。

posted @ 2017-02-11 21:38 xxx0624 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 官网:http://kafka.apache.org/ 主要有3种安装方式: 1. 单机单broker 2. 单机多broker 3. 多机多broker 1. wget http://mirror.bit.edu.cn/apache/kafka/0.10.0.1/kafka_2.11-0.10.0 阅读全文
posted @ 2016-08-29 17:56 xxx0624 阅读(367) 评论(0) 推荐(0) 编辑
摘要: python+mongodb 在爬虫的过程中,抓到一个中文字段,encode和decode都无法正确显示 注:以下print均是在mongodb中截图显示的,在pythonshell中可能会有所不同 比如中文 “余年”,假设其为变量a 1. print a 结果如下: 使用type查询之后,显示的确 阅读全文
posted @ 2016-03-06 16:31 xxx0624 阅读(1037) 评论(0) 推荐(0) 编辑
摘要: 题型:sort 大意:将给定的一系列数组成新的数,并保证这个数最大 做法1:(直观) 1.1 对于两个不含有公共前缀的字符串,直接大小比较即可 1.2 对于两个含有公共前缀的字符串strx stry,则需要比较strx+stry和stry+strx这两个新字符串的大小 例如:98 9820 983 阅读全文
posted @ 2016-02-23 17:09 xxx0624 阅读(831) 评论(0) 推荐(0) 编辑
摘要: 题型:binary search 关键在于二分查找中left,right,mid三者以及num[mid]与target的大小关系设置。 举例:nums = [1, 2, 2, 6, 7] target = 2 或者 3 根据这个样例可以得出以下具体结果 首先,分4种情况: 1. 如果target存在 阅读全文
posted @ 2016-01-30 00:33 xxx0624 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 方法一:对于方阵中的每个点来说,先看纵向最多有多少个连续的1(例如:k个),然后从k到2开始枚举正方形的边长(设为j),每次判断能否形成一个正方形的时候去判断这j行是否每行都有连续j个1 。具体做法:1. 对于每个点统计以这个点为起点,横向有多少个1,纵向有多少个1,并得到分别得到两个矩阵。2. 按... 阅读全文
posted @ 2016-01-08 21:06 xxx0624 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 手动安装GCC4.8.51. 下载源码:http://ftp.gnu.org/gnu/gcc2. cd gcc-4.8.5./contrib/download_prerequisites //下载资源包3../configure -enable-checking=release -enable... 阅读全文
posted @ 2015-11-30 14:17 xxx0624 阅读(1201) 评论(0) 推荐(0) 编辑
摘要: /×××××××××××××××××××××××××××××××××××××××××/Author:xxx0624HomePage:http://www.cnblogs.com/xxx062 阅读全文
posted @ 2015-05-10 11:00 xxx0624 阅读(643) 评论(1) 推荐(0) 编辑
摘要: 1.WordCount(统计单词)经典的运用MapReuce编程模型的实例1.1 Description给定一系列的单词/数据,输出每个单词/数据的数量1.2 Sample1 a is b is not c2 b is a is not d1.3 Output1 a:22 b:23 c:14 d:1... 阅读全文
posted @ 2015-04-22 11:31 xxx0624 阅读(419) 评论(0) 推荐(0) 编辑
摘要: /×××××××××××××××××××××××××××××××××××××××××/Author:xxx0624HomePage:http://www.cnblogs.com/xxx062 阅读全文
posted @ 2015-03-04 10:31 xxx0624 阅读(763) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示