码迷,mamicode.com
首页 > 编程语言 > 详细

算法面试题 之 最长递增子序列 LIS

时间:2015-04-10 23:59:54      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:

找出最长递增序列 O(NlogN)(不一定连续!)

参考 http://www.felix021.com/blog/read.php?1587%E5%8F%AF%E6%98%AF%E8%BF%9E%E6%95%B0%E7%BB%84%E9%83%BD%E6%B2%A1%E7%BB%99%E5%87%BA%E6%9D%A5

我就是理解了一下他的分析 用更通俗易懂的话来说说
题目是这样 d[1..9] = 2 1 5 3 6 4 8 9 7 要求找到最长的递增子序列
首先用一个数组b[] 依次的将d里面的元素丢进去 b的作用是用来记录当前最长递增子序列

先丢入2 到 b中
[2] 此时 在已知一个元素2 的情况下 最长递增子序列就是 [2]

丢入1
[2 1] 发现此时最长递增子序列就是 1 因为 2 1 不构成递增
且删除比加入的新元素小得元素 也就是删除2
那么又是 [1] 了

丢入5
[1 5]

丢入3
[1 5 3] 又出现了不递增的情况 上面说了 b是用来记录目前元素递增子序列的 所以b里面应该是递增才对
删除比加入的新元素小得元素 也就是5 得到 [1 3] ---- 此时递增子序列长度为2

丢入6
[1 3 6]

丢入4
[1 3 6 4 ] ---> [1 3 4] ----length 3

丢入8
[1 3 4 8] ---- length 4

丢入9
[1 3 4 8 9] ----length 5

丢入7
[1 3 4 8 9 7] ----> [1 3 4 7] --- length 4

那么由此一来 最大递增子序列已经找到 1 3 4 8 9

算法面试题 之 最长递增子序列 LIS

标签:

原文地址:http://www.cnblogs.com/cart55free99/p/4415950.html

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