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

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

LeetCode[300] Longest Increasing Subsequence

Given an unsorted array of integers, find the length of longest

increasing subsequence.

For example, Given [10, 9, 2, 5, 3, 7, 101, 18], The longest

increasing subsequence is [2, 3, 7, 101], therefore the length is 4.
Note that there may be more than one LIS combination, it is only
necessary for you to return the length.

Your algorithm should run in O(n2) complexity.

Follow up: Could you improve it to O(n log n) time complexity?

BinarySearch + 替换

复杂度

O(NlgN),O(N)

思路

因为要找increasing的序列,所以先遍历数组。再用二分法找当前值应该在排好序的数组中的插入位置。

对于排好序的数组,尽量用较小的值去替换已经排好序的数组中的值。因为要找的是最长的序列,所以每次将排好序的数组中替换成已经排好序的,会能保证得到的结果是最长的。

代码

// O(NlgN) public int lengthOfLIS(int[] nums) {    int len = 0;    int[] a = new int[nums.length];    for(int val : nums) {        int index = binary(a, 0, len - 1, val);        a[index] = val;        // 说明这个数字是新加进去这个数组的        if(len == index) len ++;    }    return len;}// 相当于在left-right的区间内找到val的插入位置。保证升序;public int binary(int[] a, int left, int right, int val) {    while(left <= right) {        int mid = getMid(left, right);        if(a[mid] >= val) {            right = mid - 1;        }        // 相等也要替换这个值;        else {            left = mid + 1;        }    }    return left;}public int getMid(int left, int right) {    return left + (right - left) / 2;}

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

你可能感兴趣的文章
Python的优点与功能
查看>>
三个文件,
查看>>
webpack的总结
查看>>
hibernate 一级缓存和二级缓存
查看>>
javac不是内部或外部命令
查看>>
mvc SelectList selected失效的解决方法
查看>>
JAVA 设计模式 中介者模式
查看>>
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>
查看本机IP分为两种情况:
查看>>
Scala进阶之路-Scala特征类与unapply反向抽取
查看>>
洛谷P3057 [USACO12NOV]远处的牧场Distant Pastures
查看>>
hdu3415 Max Sum of Max-K-sub-sequence 单调队列
查看>>
6421B Lab2 DHCP的配置及故障排除
查看>>
[C# 基础知识梳理系列]专题一:深入解析委托——C#中为什么要引入委托
查看>>
FOSCommentBundle功能包:其它添加评论到页面的方法
查看>>
SQL Server 2012笔记分享-17:理解并设置文件表(FileTable)
查看>>
MongoDB运行状态、性能监控与分析
查看>>