题目

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。
你算法的时间复杂度应该为 O(n2) 。
进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?

解决方法1:

class Solution {public int lengthOfLIS(int[] nums) {if(nums.length == 0) return 0;int[] dp = new int[nums.length];int res = 0;Arrays.fill(dp, 1);for(int i = 0; i < nums.length; i++) {for(int j = 0; j < i; j++) {if(nums[j] < nums[i]) dp[i] = Math.max(dp[i], dp[j] + 1);}res = Math.max(res, dp[i]);}return res;}
}

解决方法2

class Solution {public int lengthOfLIS(int[] nums) {int[] tails = new int[nums.length];int res = 0;for(int num : nums) {int i = 0, j = res;while(i < j) {int m = (i + j) / 2;if(tails[m] < num) i = m + 1;else j = m;}tails[i] = num;if(res == j) res++;}return res;}
}

算法----------最长上升子序列(Java 版本)相关推荐

  1. 实验二 动态规划算法 最长公共子序列问题

    基本题一:最长公共子序列问题 一.实验目的与要求 1.熟悉最长公共子序列问题的算法: 2.初步掌握动态规划算法: 二.实验题 若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,z ...

  2. 杭电oj1087最长递增子序列java实现

    1087链接 要求最长递增子序列和.代码如下: import java.util.Scanner;public class 杭电oj1087 {public static void main(Stri ...

  3. 动态规划算法——最长上升子序列

    今天我们要讲的是最长上升子序列(LIS). [题目描述] 给定N个数,求这N个数的最长上升子序列的长度. [样例输入] [样例输出] 7               4 2 5 3 4 1 7 6 那 ...

  4. 跟着编程之美学算法——最长递增子序列(转)

    之前学习了动态规划中最基本的问题,最长公共子序列,具体解法,见前前一篇博客: http://www.cnblogs.com/liyukuneed/archive/2013/05/22/3090597. ...

  5. 动态规划算法 | 最长递增子序列

    通过查阅相关资料发现动态规划问题一般就是求解最值问题.这种方法在解决一些问题时应用比较多,比如求最长递增子序列等. 有部分人认为动态规划的核心就是:穷举.因为要求最值,肯定要把所有可行的答案穷举出来, ...

  6. 动态规划算法04-最长递增子序列问题

    最长递增子序列问题 简述 经典的动态规划问题. 问题描述 给定一个序列,求解其中长度最长的递增子序列. 问题分析 这种可以向下查询答案的很容易想到动态规划的解法. 要求长度为i的序列Ai={a1,a2 ...

  7. 最长公共子序列Java代码实现

    最长公共子序列定义:两个或多个已知数列的子序列集合中最长的就是最长公共子序列. 比如数列A = "abcdef"和B = "adefcb",那么两个数列的公共子 ...

  8. 穷举法求最大公共子序列C语言,算法--最长公共子序列(LongestCommon Subsequence, LCS)...

    定义: 两个字符串共有的最长的子序列(可不连续),最长公共字符串(Longest CommonSubstring)是两个字符串共有的最长的连续字符串. 方法:穷举法,动态规划 动态规划法的简介: &l ...

  9. 动态规划算法——最长公共子序列求法

    给定序列X={ X1,X2,....Xn }.Y={ Y1,Y2,...Ym }找出它们的最大子序列Z={ Z1,Z2,...Zk }比如:X={ A,B ,C,B,D,A,B }.Y={ B,D,C ...

最新文章

  1. redhat7企业版linuxlinux基本操作
  2. go build不从本地gopath获取_Go包管理GOPATH、vendor、go mod机制
  3. Maven找不到要运行的JUnit测试
  4. 获取手机当前显示的ViewController
  5. 基于FPGA的波速形成实现
  6. 展望2018:WebRTC技术现状、应用开发与前景
  7. 程序员爱护自己身体的几点建议
  8. Flex2.0实现文件上传功能(服务器为ASP.NET)
  9. 一个Python小白5个小时爬虫经历,分享一下
  10. (228)FPGA岗位有哪些?
  11. Sql Server函数全解(五)之系统函数
  12. SpringBoot入门 2
  13. “21天好习惯”第一期-9
  14. html标签的英文全拼,HTML标签全称对照
  15. ntp时间校准服务器的调试方法
  16. 蓝桥杯官网练习系统入门训练(一)
  17. 黑客是如何监视女友出轨信息的,痛心的经历!
  18. 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
  19. String类的intern方法学习
  20. Oracle 游标详解(cursor)

热门文章

  1. signature=a8a3e788013f73439051c7287d7f5f0b,来用百度密语吧!!!
  2. Angular使用mathjs
  3. 托管代码与非托管代码
  4. C++知识点56——类模板(1、模板类的介绍)
  5. 基于ECS部署LAMP环境实验记录
  6. VISP视觉库识别AprilTag详细解读
  7. 直线拟合的实现步骤和相关算子
  8. centos升级python_CentOS 升级Python3
  9. 你的项目真的需要Session吗? redis保存session性能怎么样?
  10. mysql忘记密码怎么改