算法----------最长上升子序列(Java 版本)
题目
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [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.熟悉最长公共子序列问题的算法: 2.初步掌握动态规划算法: 二.实验题 若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,z ...
- 杭电oj1087最长递增子序列java实现
1087链接 要求最长递增子序列和.代码如下: import java.util.Scanner;public class 杭电oj1087 {public static void main(Stri ...
- 动态规划算法——最长上升子序列
今天我们要讲的是最长上升子序列(LIS). [题目描述] 给定N个数,求这N个数的最长上升子序列的长度. [样例输入] [样例输出] 7 4 2 5 3 4 1 7 6 那 ...
- 跟着编程之美学算法——最长递增子序列(转)
之前学习了动态规划中最基本的问题,最长公共子序列,具体解法,见前前一篇博客: http://www.cnblogs.com/liyukuneed/archive/2013/05/22/3090597. ...
- 动态规划算法 | 最长递增子序列
通过查阅相关资料发现动态规划问题一般就是求解最值问题.这种方法在解决一些问题时应用比较多,比如求最长递增子序列等. 有部分人认为动态规划的核心就是:穷举.因为要求最值,肯定要把所有可行的答案穷举出来, ...
- 动态规划算法04-最长递增子序列问题
最长递增子序列问题 简述 经典的动态规划问题. 问题描述 给定一个序列,求解其中长度最长的递增子序列. 问题分析 这种可以向下查询答案的很容易想到动态规划的解法. 要求长度为i的序列Ai={a1,a2 ...
- 最长公共子序列Java代码实现
最长公共子序列定义:两个或多个已知数列的子序列集合中最长的就是最长公共子序列. 比如数列A = "abcdef"和B = "adefcb",那么两个数列的公共子 ...
- 穷举法求最大公共子序列C语言,算法--最长公共子序列(LongestCommon Subsequence, LCS)...
定义: 两个字符串共有的最长的子序列(可不连续),最长公共字符串(Longest CommonSubstring)是两个字符串共有的最长的连续字符串. 方法:穷举法,动态规划 动态规划法的简介: &l ...
- 动态规划算法——最长公共子序列求法
给定序列X={ X1,X2,....Xn }.Y={ Y1,Y2,...Ym }找出它们的最大子序列Z={ Z1,Z2,...Zk }比如:X={ A,B ,C,B,D,A,B }.Y={ B,D,C ...
最新文章
- redhat7企业版linuxlinux基本操作
- go build不从本地gopath获取_Go包管理GOPATH、vendor、go mod机制
- Maven找不到要运行的JUnit测试
- 获取手机当前显示的ViewController
- 基于FPGA的波速形成实现
- 展望2018:WebRTC技术现状、应用开发与前景
- 程序员爱护自己身体的几点建议
- Flex2.0实现文件上传功能(服务器为ASP.NET)
- 一个Python小白5个小时爬虫经历,分享一下
- (228)FPGA岗位有哪些?
- Sql Server函数全解(五)之系统函数
- SpringBoot入门 2
- “21天好习惯”第一期-9
- html标签的英文全拼,HTML标签全称对照
- ntp时间校准服务器的调试方法
- 蓝桥杯官网练习系统入门训练(一)
- 黑客是如何监视女友出轨信息的,痛心的经历!
- 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
- String类的intern方法学习
- Oracle 游标详解(cursor)