300. Longest Increasing Subsequence
一、题目
1、审题
2、分析
给出一个无序的整形数组,求其中递增的最大序列的元素个数。
二、解答
1、思路
方法一、
采用 dp 数组,长度为 nums 的元素个数。
①、dp[index] 记录当前下标 index 对应元素与前边的数组元素组成的最大递增序列的个数。
②、dp 所有元素初始化为 1。 当此元素值比前头 下标 i 的元素大时,dp[index] = MAX[dp[index], dp[i] + 1]。
③、返回 dp 中的最大值。
public int lengthOfLIS(int[] nums) {int len = nums.length;int[] dp = new int[len];Arrays.fill(dp, 1);;for (int i = 1; i < len; i++) {for (int j = i - 1; j >= 0; j--) {if(nums[i] > nums[j])dp[i] = Math.max(dp[i], dp[j] + 1);}}int res = 0;for (int i = 0; i < len; i++) {res = Math.max(res, dp[i]);}return res;}
方法二、
维护一个新数组 tails。
①、tails 存放最优状态的递增序列。后边出现的元素 x 有两种状况:
a、 x比 tails 中所有元素都大,则 tails 放在尾部。
b、tails[i - 1] < x < tails[x], 则 tails[i] = x;
②、故 更新 tails 数组可以采用 二分查找。最终返回的是 tails 数组中的元素的个数。
public int lengthOfLIS2(int[] nums) {int[] tails = new int[nums.length];int size = 0;for(int x: nums) {int i = 0, j = size;while(i != j) {int m = (i + j) / 2;if(tails[m] < x)i = m + 1;else j = m;}tails[i] = x;if(i == size)size++;}return size;}
转载于:https://www.cnblogs.com/skillking/p/10026946.html
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
https://www.youtube.com/watch?v=CE2b_-XfVDk&t=300s 07/04/2017更新 今天又仔细写了一遍,发现这题昨天还是没想清楚. 昨天我以为, i ...
- 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 ...
最新文章
- zabbixdocker里的mysql_Zabbix Docker
- 【NLP机器学习基础】从线性回归和Logistic回归开始
- linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题
- oracle sql 输出,将数据从Oracle SQL Developer导出到Excel .xlsx
- 转载:redis备份策略
- request中的技巧
- 安卓调用系统语音识别功能全解(谷歌语音服务):获取识别结果,使用语音识别进行搜索。
- openwrt路由器更换了Flash之后需要修改的源码
- (转)向浑水(Muddy Waters Research)学习如何调查公司
- 彻底卸载2345系列
- 镜像构建工具SOURCE TO IMAGE(S2I)实践
- 皇太极有多宠爱宸妃海兰珠,从这三件事可以看出
- 《CISP》(三)信息安全管理
- 壹连科技冲刺深交所:年营收14亿 65%收入来自宁德时代
- 美术-图片建模一键生成对称模型
- 华为设备Telnet配置命令及注释
- solo 电路 耳放_自己焊的一个耳放(参考solo)
- 一个html基本写法,HTML5教程:HTML5的基础写法
- VKL144A/B 36*4点 超低功耗LCD液晶显示驱动控制电路(IC) TSSOP48/QFN48超小体积,多用于测试仪/水电表/传感器/压力表等,超低工作电流约7.5微安
- ppt编写一个抽奖系统_自己动手用PPT做个抽奖器
热门文章
- oracle无法打开表的行集,Oracle错误ORA-22905:无法访问非嵌套表项中的行
- 请选择JAVA中有效的标识_Java中有效的标识符是什么?
- 插入排序c语言_玩扑克牌中插扑克牌手法就是不一样,C语言经典算法之插入排序...
- 软件项目管理 用户测试,1对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理.doc...
- 获取鼠标在盒子中的坐标
- 遇见BUG(3)critical warning也要关注!
- 【 FPGA 】Xilinx FPGA器件命名意义?
- Virtex-6系列FPGA的CLB
- 《C++面向对象高效编程(第2版)》——导读
- std::ios::sync_with_stdio(false);