最长递增子序列问题,O(N*logN)实现
来源:互联网 发布:百纳科技源码 编辑:程序博客网 时间:2024/06/05 18:18
最长递增子序列的长度问题,O(N*logN)实现
子序列:可以不连续的
例如:2,1,3,4,7,5,6
上述序列的最长递增子序列是1,3,4,5,6或者2,3,4,5,6
一般方法:
number : 2 3 1 7 4 5
index: 0 1 2 3 4 5
len[]: 1 2 1 3 3 4
第一个len[0]是1
之后每一个number[i]查看number[0至(i-1)],如果number值比它小,
那么len[i]为它+1(当然更新发生在它比len[i]大的情况下)
过一遍之后,len[n-1]即为所求。
则时间复杂度为O(n*n)
n*logn算法:
2 1 3 4 7 5 6
min_ends(最小结尾数组):
分为有效区和无效区[有效区|无效区]
当你遍历到一个值的时候,如果此时此值在有效区,
ends[i]:代表所有长度为i+1的最长递增子序列中最小结尾就是i的值
如果在无效区,则没有意义。
2 1 3 4 7 5 6
ends 2
ends 1
ends 1 3
ends 1 3 4
ends 1 3 4 7
ends 1 3 4 5
ends 1 3 4 5 6
index 0 1 2 3 4 5 6
遍历时,在有效区二分查找,找到第一个比它大的数,
如果找到,则更新大的数为当前值,
如果没有找到,则直接填写此值。
阅读全文
0 0
- 最长递增子序列问题,O(N*logN)实现
- 51nod_1134 最长递增子序列(O(n*logn))
- 用O(nlog(n)实现最长递增子序列问题
- 杭电1257(最长递增子序列O(N*N)+O(N*logN))
- HOJ 2985 Wavio Sequence(最长递增子序列以及其O(n*logn)算法)
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- 算法导论15.4-6 求一个n个数的序列的最长单调递增子序列 O(n*logn)
- nyoj17单调递增最长子序列(N*logN)
- 最长不下降子序列的O(n*logn)算法
- DP之最长上升子序列O(n*logn)算法
- DP之最长上升子序列O(n*logn)算法
- 最长上升子序列 o(n*logn)算法
- ZOJ3627 POJ1631 HDU1950 Bridging Signals,O(N*logN)版最长上升子序列问题
- 最长递增子序列 O(n^2) 与 O(nlogn)
- 最长递增子序列O(n^2)版
- 最长单调递增子序列(O(n^2))
- 动态规划解最长递增子序列(O(n^2))
- Echarts请求json数据实例
- LeetCode35. Search Insert Position
- IE浏览器下点击a标签有虚线框的问题
- 自定义认证后台和QQ第三方登录
- The requested resource is not available的解决方法
- 最长递增子序列问题,O(N*logN)实现
- 用git将项目代码上传到github
- 聚类算法
- HYSBZ3531-旅行
- 【译】深度学习中各种优化器简介
- Oracle 11g RAC SCAN ip的原理及配置
- GitHup学习总结
- 打造自媒体百万爆文的技巧
- vc不显示控制台程序命令窗口