[抄题]:

往上走台阶

最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。

样例

给出 [5,4,1,2,3],LIS 是 [1,2,3],返回 3
给出 [4,2,4,5,3,7],LIS 是 [2,4,5,7],返回 4

 

[思维问题]:

  1. 不知道怎么处理递增:还是坐标型(有小人在里面跳),用i j来进行比较
  2. intialization answer都不止一个点:可以从所有的点开始或结束

[一句话思路]:

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

  1. 是比较nums[i,j]的大小,不是比较lis[i,j]的大小

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

debug多看数组名

[复杂度]:Time complexity: O(n^2) Space complexity: O(n^2)

[英文数据结构或算法,为什么不用别的数据结构或算法]:

  1. subarray连续,subsequence不连续
  2. 二分法也是能不用就不用
  3. 求具体方案用搜索

[其他解法]:

暴力解法:所有的一起比较

[Follow Up]:

几个“最值”经典算法

LCA:lowest common ancestor(不考)

LIS: longest increasing subsequence

LCS: longest common subsequence

[LC给出的题目变变变]:

673. Number of Longest Increasing Subsequence 计数不能用hashmap,要新建数组

334. Increasing Triplet Subsequence :可行+序列 ,最大、最小两个方向

354. Russian Doll Envelopes:个数、序列、最值

[代码风格] :

public class Solution {
/*
* @param nums: An integer array
* @return: The length of LIS (longest increasing subsequence)
*/
public int lengthOfLIS(int[] nums) {
//corner case
if (nums == null || nums.length == 0) {
return 0;
}
//state
int n = nums.length;
int[] lis = new int[n];
//intialization
for (int i = 0; i < n; i++) {
lis[i] = 1;
}
//function
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {//5-no
lis[i] = Math.max(lis[i], lis[j] + 1);
}
}
}
//answer
int max = lis[0];
for (int i = 1; i < n; i++) {
max = Math.max(max, lis[i]);
}
return max;
}
}

300最长上升子序列 · Longest Increasing Subsequence的更多相关文章

  1. [Swift]LeetCode300. 最长上升子序列 | Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...

  2. nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)

    最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2).但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n).  具体分析参考:http://b ...

  3. 动态规划--最长上升子序列(Longest increasing subsequence)

    前面写了最长公共子序列的问题.然后再加上自身对动态规划的理解,真到简单的DP问题很快就解决了.其实只要理解了动态规划的本质,那么再有针对性的去做这方的题目,思路很快就会有了.不错不错~加油 题目描述: ...

  4. 最长递增子序列(Longest increasing subsequence)

    问题定义: 给定一个长度为N的数组A,找出一个最长的单调递增子序列(不要求连续). 这道题共3种解法. 1. 动态规划 动态规划的核心是状态的定义和状态转移方程.定义lis(i),表示前i个数中以A[ ...

  5. 【转】动态规划:最长递增子序列Longest Increasing Subsequence

    转自:https://www.cnblogs.com/coffy/p/5878915.html 设f(i)表示L中以ai为末元素的最长递增子序列的长度.则有如下的递推方程: 这个递推方程的意思是,在求 ...

  6. 算法实践--最长递增子序列(Longest Increasing Subsquence)

    什么是最长递增子序列(Longest Increasing Subsquence) 对于一个序列{3, 2, 6, 4, 5, 1},它包含很多递增子序列{3, 6}, {2,6}, {2, 4, 5 ...

  7. [Swift]LeetCode594. 最长和谐子序列 | Longest Harmonious Subsequence

    We define a harmonious array is an array where the difference between its maximum value and its mini ...

  8. 最长递增子序列(Longest Increase Subsequence)

    问题 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱).例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8 ...

  9. 最长公共子序列(Longest common subsequence)

    问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子序列.(子序列中的字符不要求连续) 这道题可以 ...

随机推荐

  1. PHP下载文件的几种方案

    PHP下载远程文件的3种方法以及性能考虑 2014-02-21      0个评论       收藏    我要投稿 今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很 ...

  2. 如何使用App.config文件,读取字符串?

    如何使用App.config文件,读取字符串? .在项目里添加App.config文件,内容如下: <?xml version="1.0" encoding="ut ...

  3. c++并发编程实战 笔记

    http://blog.csdn.net/u010087886/article/category/5884745

  4. IDEA编译Flume Sink通不过解决方法

    Build/Rebuild Project之后

  5. PHP mysqli_fetch_object() 函数实例讲解

    定义和用法 mysqli_fetch_object() 函数从结果集中取得当前行,并作为对象返回. 注释:该函数返回的字段名是区分大小写的. 语法 mysqli_fetch_object(result ...

  6. 最强数据集50个最佳机器学习公共数据,可以帮你验证idea!

    1.  寻找数据集の奥义 根据CMU的说法,寻找一个好用的数据集需要注意一下几点: 数据集不混乱,否则要花费大量时间来清理数据. 数据集不应包含太多行或列,否则会难以使用. 数据越干净越好,清理大型数 ...

  7. Sass、Less编译器koala及koala不支持中文字体的解决方法

    一款很好用的Sass编译器,还可以编译Less.coffeescript等 去官网下载适合自己电脑的版本 http://koala-app.com/index-zh.html 打开后拖动或者打开项目目 ...

  8. CUDA C Programming Guide 在线教程学习笔记 Part 5

    附录 A,CUDA计算设备 附录 B,C语言扩展 ▶ 函数的标识符 ● __device__,__global__ 和 __host__ ● 宏 __CUDA_ARCH__ 可用于区分代码的运行位置. ...

  9. 搜集几个API接口

    新浪:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 返回数据:var remote_ip_info = {"ret ...

  10. 5.mybatis实战教程(mybatis in action)之五:与spring3集成(附源码)

    转自:https://blog.csdn.net/nnn9223643/article/details/41962097 在 这一系列文章中,前面讲到纯粹用mybatis 连接数据库, 然后 进行增删 ...