【力扣】300. 最长递增子序列 <动态规划>

【力扣】300. 最长递增子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1

提示:
1 <= nums.length <= 2500
- 1 0 4 10^4 104 <= nums[i] <= 1 0 4 10^4 104

题解

回溯五步:

  • 确定dp数组以及下标的含义
    dp[j] 表示: 第 i 个数字结尾的最长上升子序列的长度,注意 nums[i] 必须被选取

  • 确定递推公式
    在计算 dp[i] 之前,已经计算出 dp[0...i−1] 的值,则状态转移方程为
,其中且

  • dp数组如何初始化
    dp[0]=1

  • 确定遍历顺序
    正常遍历从左到右

  • 举例推导dp数组
    输入是:10 9 2 5 3 7 101,输出为:1 1 1 2 2 3 4
    输入是:5 7 1 9 4 6 2 8 3,输出为:1 2 1 3 2 3 2 4 3

class Solution {public int lengthOfLIS(int[] nums) {if (nums.length == 0) {return 0;}int[] dp = new int[nums.length];dp[0] = 1;int maxans = 1;for (int i = 1; i < nums.length; i++) {// 默认以i为结尾的最长串是1,只有它本身dp[i] = 1;// 从0 判断到 ifor (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[i], dp[j] + 1);}}// 取dp数组中的最大值maxans = Math.max(maxans, dp[i]);}return maxans;}
}

计算状态 dp[i] 时,需要 O(n) 的时间遍历 dp[0…i−1] 的所有状态,所以总时间复杂度为 O( n 2 n^2 n2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115160.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vSAN数据恢复-vSAN架构下虚拟机磁盘组件出现问题的数据恢复案例

vsan数据恢复环境&#xff1a; 一套VMware vSAN超融合基础架构&#xff0c;全闪存&#xff0c;开启压缩重删。共11台服务器节点。每台服务器节点上配置1块PCIE固态硬盘和8-10块SSD固态硬盘。 每个服务器节点上创建1个磁盘组&#xff0c;每个磁盘组将1个PCIE固态硬盘识别为2个硬…

李佳琦翻车一周后,互联网打工人终于敢夸夸努力生活的自己

9月9日&#xff0c;李佳琦在直播间推销“花西子”79元的眉笔时&#xff0c;有弹幕留言说太贵了。然后李佳琦直接开始和弹幕的对线&#xff0c;他反问&#xff1a;哪里贵了&#xff1f;这么多年都是这个价格&#xff0c;不要睁着眼睛乱说&#xff0c;国货品牌很难的……哪里贵了…

伦敦银一手是多少?

伦敦银是以国际现货白银价格为跟踪对象的电子合约交易&#xff0c;无论投资者通过什么地方的平台进入市场&#xff0c;执行的都是统一国际的标准&#xff0c;一手标准的合约所代表的就是5000盎司的白银&#xff0c;如果以国内投资者比较熟悉的单位计算&#xff0c;那约相当于15…

【Jmeter】提取和引用Token

【2023性能测试完整版】这可能是B站讲得最好的软件测试课程&#xff08;Jmeter 接口测试实战 Loadrunner Tomcat综合教程&#xff09;软件测试面试、自动化测试。 1.执行获取token接口 在结果树这里&#xff0c;使用$符号提取token值。 $根节点&#xff0c;$.data.token表示提取…

CRC校验原理与FPGA实现(含推导过程)

CRC校验原理与FPGA实现&#xff08;含推导过程&#xff09; 写在前面一、CRC校验原理1.1 CRC校验基本概念1.2 CRC校验计算1.2.1 发送端CRC校验码计算1.2.1.1 CRC校验码计算方法1.2.1.2 CRC校验码计算例子 1.2.2 接收端CRC校验1.2.2.1 校验通过1.2.2.2 数据段出错1.2.2.3 CRC校验…

【算法练习Day3】 移除链表元素设计链表反转链表

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 移除链表元素其他问题 设…

十几张高清世界地图

十几张高清世界地图 仅供学习&#xff01;

【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

A+CLUB管理人支持计划第八期 | 量创投资

免责声明 本文内容仅对合格投资者开放&#xff01; 私募基金的合格投资者是指具备相应风险识别能力和风险承担能力&#xff0c;投资于单只私募基金的金额不低于100 万元且符合下列相关标准的单位和个人&#xff1a; &#xff08;一&#xff09;净资产不低于1000 万元的单位&…

【验证码逆向专栏】螺丝帽人机验证逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

ID保持的人像生成

AIGC真实人像写真&#xff0c;也即输入一些图片&#xff0c;生成图片里对应人物在不同场景和风格下的图片。妙鸭相机作为AIGC领域一款成功的收费产品为大家展示了如何使用AIGC技术只需要少量的人脸图片建模&#xff0c;即可快速提供真/像/美的个人写真&#xff0c;在极短的时间…

基于微信小程序的护工服务预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明具体实现截图用户微信端的主要功能有&#xff1a;护工微信端的主要功能有:管理员的主要功能有&#xff1a;详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前言 &…