https://www.youtube.com/watch?v=CE2b_-XfVDk&t=300s

07/04/2017更新

今天又仔细写了一遍,发现这题昨天还是没想清楚。 昨天我以为, if (nums[i] > nums[j]) 这句决定了dp里面有些位是0的,其实不是的,这个if只是会更新max的值,如果不更新,那dp这一位就等于之前的max的,也正因为如此,max是要在外层for每次右移都更新的。另外也正因为如此,最后返回的结果不能是dp[nums.length-1]。

另外,看了一下第二种方法,二分+一个for循环,但感觉有点tricky,不太好找规律。偷懒了,不写了。

以下讲解摘自:http://www.jianshu.com/p/a3cd9df6d9d1

这种方法的解题步骤是: -将第1个数字加入解集; -依次读取后面的数字,如果此数字比解集中最后一个数字大,则将此数字追加到解集后,否则,用这个数字替换解集中第一个比此数字大的数,解集是有序的,因此查找可以用二分法,复杂度O(log n); -最后的答案是解集的长度(而解集中保存的并不一定是合法解)。 举个栗子,输入为[1,4,6,2,3,5]: -解集初始化为[1]; -读到4,将其追加到解集中,解集变为[1,4]; -读到6,将其追加到解集中,解集变为[1,4,6]; -读到2,用其替换解集中的4,解集变为[1,2,6],注意此时解集不是一个合法解,因为2是在6后出现的,但是解集的长度始终标识着当前最长序列的长度; -读到3,用其替换解集中的6,解集变为[1,2,3]; -读到5,将其追加到解集中,解集变为[1,2,3,5],得到答案为解集长度4。


06/04/2017

LIS问题,老生常谈的一维DP问题了。但是我这题竟然想了很久没想通。最后还看了答案调试了一会儿。有时感觉一维dp比二维dp还要复杂。。或者说因为我脑子现在已经不转了。。好累。这两天好累啊,白天上班晚上上课,尤其上完课大半夜再想这个,脑子已经不怎么转了,很痛苦。我不喜欢这种节奏。很烦。

还有O(nlogn)的方法,抽空再看了。。

    public int lengthOfLIS(int[] nums) {if (nums.length == 0) return 0;int dp[] = new int[nums.length];dp[0] = 1;int res = 1;for (int i = 1; i < nums.length; i++) {//max不能是全局的int max = 1;for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {//这里不能就开始改变dp[i],否则下一次循环就乱了max = Math.max(dp[j] + 1, max);}}dp[i] = max;res = Math.max(dp[i] , res);}return res;}
复制代码

转载于:https://juejin.im/post/5a3134126fb9a0452b493c99

300 Longest Increasing Subsequence相关推荐

  1. 【暴力】LeetCode 300. Longest Increasing Subsequence

    LeetCode 300. Longest Increasing Subsequence Solution1:我的答案 暴力搜索,时间复杂度O(n2)O(n2)O(n^2) class Solutio ...

  2. leetcode 300. Longest Increasing Subsequence | 300. 最长递增子序列(动态规划)

    题目 https://leetcode.com/problems/longest-increasing-subsequence/ 题解 难得有官方题解的一道题. 参考:https://leetcode ...

  3. [leetcode] 300. Longest Increasing Subsequence (Medium)

    题意: 求最长增长的子序列的长度. 思路: 利用DP存取以i作为最大点的子序列长度. Runtime: 20 ms, faster than 35.21% of C++ online submissi ...

  4. 300. Longest Increasing Subsequence

    一.题目 1.审题 2.分析 给出一个无序的整形数组,求其中递增的最大序列的元素个数. 二.解答 1.思路 方法一. 采用 dp 数组,长度为 nums 的元素个数. ①.dp[index] 记录当前 ...

  5. 300 Longest Increasing Subsequence 最长上升子序列

    给出一个无序的整形数组,找到最长上升子序列的长度. 例如, 给出 [10, 9, 2, 5, 3, 7, 101, 18], 最长的上升子序列是 [2, 3, 7, 101],因此它的长度是4.因为可 ...

  6. leetcode(300)—— Longest Increasing Subsequence(最长递增子序列)

    参考 Python 解法: 动态规划 -- 最长递增子序列(LIS) 原题位置:Longest Increasing Subsequence | LeetCode OJ 题目的说明: 严格递增: 子序 ...

  7. LeetCode 300. Longest Increasing Subsequence--O(n log n)--Java,C++,Python解法

    题目地址: Given an unsorted array of integers, find the length of longest increasing subsequence. Exampl ...

  8. HPU第三次积分赛-D:Longest Increasing Subsequence(DP)

    Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1​,a2​,a3​,a4​...an​, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...

  9. [Swift]LeetCode673. 最长递增子序列的个数 | Number of Longest Increasing Subsequence

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

最新文章

  1. ADAS可行驶区域道路积水反光区域的识别算法
  2. Nginx 日志中记录cookie
  3. 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)
  4. 浅析 PHP 中的 Generator
  5. 前端学习(2153):Vue的终极解决方案
  6. Nginx的应用之动静分离
  7. ikun 潜入?疑似 B 站后台源码泄露
  8. js 获取当天时间,实现展示包含今天的一周时间的方法
  9. Django tips: 查看当前Request所执行的所有SQL
  10. masm5安装教程_masm5 1、下载个masm5.0(简单 联合开发网 - pudn.com
  11. NiFi 一键自动升级Nar包
  12. 马斯克入驻推特造成大恐慌!这俩戏精还冒充被裁员工,外媒全被耍了
  13. 拿什么产品引流年轻女性?发什么能吸引女粉丝?
  14. 如何彻底卸载win10预装的office365等
  15. 文创产品的毕业论文设计要怎么写呢?
  16. 腾讯云服务器如何重装系统
  17. 如何提高项目估算精准度?关键看5大影响因子
  18. MySQL备份恢复-mysqldump/xbk
  19. 图像特征提取中的平移不变性、旋转不变性、尺度不变性
  20. Your account has been blocked. git更新代码时报错

热门文章

  1. 神经网络到底是如何思考的?MIT精英们做了这么一个实验室来搞清楚
  2. 应用 | 红黄蓝的虐童惨案,其实可以用机器学习等技术来避免
  3. Python 3 尴尬了这么久,终于有救了
  4. Spring Boot 面试杀手锏:自动配置原理
  5. 再见了!面试八股文。。。
  6. Spring Boot 实现接口幂等性的 4 种方案!还有谁不会?
  7. 搞了半天,终于弄懂了TCP Socket数据的接收和发送,太难~
  8. ICLR 2022:AI如何识别“没见过的东西”?
  9. 开源!北大研究生把《统计学习方法》书中全部算法都实现了!
  10. 这只狗,其实是猫变的:“撸猫神器”StarGAN v2来了!