300 Longest Increasing Subsequence
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相关推荐
- 【暴力】LeetCode 300. Longest Increasing Subsequence
LeetCode 300. Longest Increasing Subsequence Solution1:我的答案 暴力搜索,时间复杂度O(n2)O(n2)O(n^2) class Solutio ...
- leetcode 300. Longest Increasing Subsequence | 300. 最长递增子序列(动态规划)
题目 https://leetcode.com/problems/longest-increasing-subsequence/ 题解 难得有官方题解的一道题. 参考:https://leetcode ...
- [leetcode] 300. Longest Increasing Subsequence (Medium)
题意: 求最长增长的子序列的长度. 思路: 利用DP存取以i作为最大点的子序列长度. Runtime: 20 ms, faster than 35.21% of C++ online submissi ...
- 300. Longest Increasing Subsequence
一.题目 1.审题 2.分析 给出一个无序的整形数组,求其中递增的最大序列的元素个数. 二.解答 1.思路 方法一. 采用 dp 数组,长度为 nums 的元素个数. ①.dp[index] 记录当前 ...
- 300 Longest Increasing Subsequence 最长上升子序列
给出一个无序的整形数组,找到最长上升子序列的长度. 例如, 给出 [10, 9, 2, 5, 3, 7, 101, 18], 最长的上升子序列是 [2, 3, 7, 101],因此它的长度是4.因为可 ...
- leetcode(300)—— Longest Increasing Subsequence(最长递增子序列)
参考 Python 解法: 动态规划 -- 最长递增子序列(LIS) 原题位置:Longest Increasing Subsequence | LeetCode OJ 题目的说明: 严格递增: 子序 ...
- 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 ...
- HPU第三次积分赛-D:Longest Increasing Subsequence(DP)
Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1,a2,a3,a4...an, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...
- [Swift]LeetCode673. 最长递增子序列的个数 | Number of Longest Increasing Subsequence
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
最新文章
- ADAS可行驶区域道路积水反光区域的识别算法
- Nginx 日志中记录cookie
- 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)
- 浅析 PHP 中的 Generator
- 前端学习(2153):Vue的终极解决方案
- Nginx的应用之动静分离
- ikun 潜入?疑似 B 站后台源码泄露
- js 获取当天时间,实现展示包含今天的一周时间的方法
- Django tips: 查看当前Request所执行的所有SQL
- masm5安装教程_masm5 1、下载个masm5.0(简单 联合开发网 - pudn.com
- NiFi 一键自动升级Nar包
- 马斯克入驻推特造成大恐慌!这俩戏精还冒充被裁员工,外媒全被耍了
- 拿什么产品引流年轻女性?发什么能吸引女粉丝?
- 如何彻底卸载win10预装的office365等
- 文创产品的毕业论文设计要怎么写呢?
- 腾讯云服务器如何重装系统
- 如何提高项目估算精准度?关键看5大影响因子
- MySQL备份恢复-mysqldump/xbk
- 图像特征提取中的平移不变性、旋转不变性、尺度不变性
- Your account has been blocked. git更新代码时报错
热门文章
- 神经网络到底是如何思考的?MIT精英们做了这么一个实验室来搞清楚
- 应用 | 红黄蓝的虐童惨案,其实可以用机器学习等技术来避免
- Python 3 尴尬了这么久,终于有救了
- Spring Boot 面试杀手锏:自动配置原理
- 再见了!面试八股文。。。
- Spring Boot 实现接口幂等性的 4 种方案!还有谁不会?
- 搞了半天,终于弄懂了TCP Socket数据的接收和发送,太难~
- ICLR 2022:AI如何识别“没见过的东西”?
- 开源!北大研究生把《统计学习方法》书中全部算法都实现了!
- 这只狗,其实是猫变的:“撸猫神器”StarGAN v2来了!