【面试经典150 | 】最长递增子序列

news2024/12/27 11:15:17

文章目录

  • Tag
  • 题目来源
  • 解题思路
    • 方法一:动态规划
  • 写在最后

Tag

【动态规划】【数组】


题目来源

300. 最长递增子序列


解题思路

方法一:动态规划

定义状态

dp[i] 表示以位置 i 对应整数为末尾的最长递增子序列的长度。

状态转移

我们从小到大计算 dp 数组的值,在计算 dp[i] 之前,我们已经计算出 dp[0], dp[1], ..., dp[i-1] 的值,有状态转移方程:

d p [ i ] = m a x ( d p [ i ] , d p [ j ] + 1 ) ,其中 0 ≤ j < i 且 n u m s [ j ] < n u m s [ i ] dp[i] = max(dp[i], dp[j] + 1),其中 0 \le j < i 且 nums[j] < nums[i] dp[i]=max(dp[i],dp[j]+1),其中0j<inums[j]<nums[i]

在计算状态 dp[i] 时,更新答案 max_length

base case

对于以 nums[i] 结尾的最长递增子序列,我们均初始化为 1。

最后返回

最后直接返回维护的最长递增子序列的长度 max_length

实现代码

class Solution {
public:
	int lengthOfLIS(vector<int>& nums) {
        int n = nums.size();
		vector<int> dp(n + 1, 1);
		int max_length = 0;

        if(n <= 1) return n;
        
		for (int i = 1; i < nums.size(); ++i) {
			for (int j = 0; j < i; ++j) {
				if (nums[j] < nums[i]) {
					dp[i] = max(dp[i], dp[j] + 1);
				}
			}
			max_length = max(max_length, dp[i]);
		}
		return max_length;
	}
};

复杂度分析

时间复杂度: O ( n 2 ) O(n^2) O(n2) n n n 是数组 nums 的长度。我们一共需要计算 O ( n ) O(n) O(n) 个状态,每个状态需要 O ( n ) O(n) O(n) 的时间遍历 dp[0, ..., i-1] 的状态,所以时间复杂度为 O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( n ) O(n) O(n)


写在最后

如果您发现文章有任何错误或者对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度的方法,欢迎评论区交流。

最后,感谢您的阅读,如果有所收获的话可以给我点一个 👍 哦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)

文章目录 1. 前言2. Basic Queue 简单队列模型2.1 父工程导入依赖2.2 消息发送2.2.1 消息发送方必要的配置2.2.2 发消息 3. 消息接收3.1 消息接收方必要的配置3.2 接收消息 1. 前言 SpringAMQP 是基于 RabbitMQ 封装的一套模板&#xff0c;并且还利用 SpringBoot 对其实现了自…

【教程】iOS 手机抓包工具介绍及教程

&#x1f4f1; 最近又发现APP Store一款宝藏软件&#xff0c;克魔助手抓包工具&#xff0c;app刚上架&#xff0c;功能不断迭代中&#xff0c;目前18软妹币实惠价可享受终身版&#xff01;现在是下手的最好时机。 引言 移动端开发中&#xff0c;抓包工具已成为必备的工具之一…

数据库 05-05 优化

01.查询优化的概念 02.例子&#xff1a;优化关系代数 转换关系代数&#xff1a; 03.优化查询执行计划 04.这些都是查询优化器&#xff0c;详细介绍&#xff1a; 一. 等价表达式 等价规则&#xff1a; 01. 02. 03. 04. E1 X E2 是全部笛卡尔积 什么是自然连…

c++的学习之路:5、类和对象(1)

一、面向对象和面向过程 在说这个定义时&#xff0c;我就拿c语言举例&#xff0c;在c语言写程序的时候&#xff0c;基本上就是缺什么函数&#xff0c;就去手搓一个函数&#xff0c;写的程序也只是调用函数的&#xff0c;而c就是基于面向对象的开发&#xff0c;他关注的不再是单…

AXI Memory Mapped to PCI Express 学习笔记(五)—— Test Bench

本文包含有关Vivado Design Suite环境中提供的测试平台&#xff08;Test Bench&#xff09;的信息。 一、Endpoint的Root Port模型测试平台 PCI Express Root Port Model是一个强大的测试平台环境&#xff0c;它提供了一个测试程序接口&#xff0c;可以与提供的PIO设计&#…

【技术】实现MES系统与其他系统集成的关键步骤和技术

在当今数字化的制造环境中&#xff0c;MES系统&#xff08;制造执行系统&#xff09;已成为企业提高生产效率和管理水平的重要工具。然而&#xff0c;要实现MES系统与其他系统的集成&#xff0c;充分发挥其潜力&#xff0c;并非易事。本文将探讨实现MES系统与其他系统集成的关键…

Matplotlib数据可视化实战-2绘制折线图(2)

2.11营业额可视化 已知某学校附近一个烧烤店2022年每个月的营业额如下图所示。编写程序绘制折线图对该烧烤店全年营业额进行可视化&#xff0c;使用红色点画线连接每个月的数据&#xff0c;并在每个月的数据处使用三角形进行标记。 烧烤店营业额 月份123456789101112营业额/万…

8.HelloWorld小案例

文章目录 一、Java程序开发运行流程如何理解编译&#xff1f; 二、HelloWorld案例的编写1、新建文本文档文件&#xff0c;修改名称为HelloWorld.java。2、用记事本打开HelloWorld.java文件&#xff0c;输写程序内容。代码要跟我编写的完全保持一致。3、ctrl s 保存&#xff0c…

基于springboot实现图书个性化推荐系统项目【项目源码+论文说明】

基于springboot实现图书个性化推荐系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

【vue3学习笔记(二)】(第141-143节)初识setup;ref函数_处理基本类型;ref函数_处理对象类型

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 本篇内容对应课程第141-143节 课程 P141节 《初识setup》笔记 1、setup是所有组合式API“表演的舞台”&#xff0c;组件中所用到的所有数据、方法、监视数据、生命周期钩子等都需要配置在setup中。 2、setup的两种返回值&…

技术导读 | 如何为SecOps插上AI的翅膀

随着数字经济的蓬勃发展&#xff0c;数据安全和网络安全的重要性日益凸显。在数字经济时代&#xff0c;数据已成为企业的核心资产&#xff0c;而网络安全则是保障数据安全的基石。然而&#xff0c;面对不断变化的攻击模式、扩大的攻击面以及日益复杂的安全事件&#xff0c;许多…

国内IP切换软件:解锁网络世界的新钥匙

在数字化快速发展的今天&#xff0c;互联网已成为我们生活中不可或缺的一部分。然而&#xff0c;伴随着网络使用的深入&#xff0c;许多用户逐渐意识到&#xff0c;不同的IP地址可能会带来截然不同的网络体验。为了应对这一问题&#xff0c;国内IP切换软件应运而生&#xff0c;…

阿里云倚天服务器是什么?倚天服务器c8y、g8y和r8y详细介绍

阿里云倚天云服务器CPU采用倚天710处理器&#xff0c;租用倚天服务器c8y、g8y和r8y可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持&#xff1a; 阿里云倚天云服务…

证书(公钥):网络安全的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【软考】UML中的图之状态图

目录 1. 说明2. 图示 1. 说明 1.状态图&#xff08;State Diagram&#xff09;展现了一个状态机。2.由状态、转换、事件和活动组成。3.关注系统的动态视图。4.对于接口、类和协作的行为建模尤为重要。5.强调对象行为的事件顺序。6.通常包括简单状态和组合状态、转换&#xff0…

TensorRT的两种INT8量化方式: QTA, PTQ

TensorRT的两种INT8量化方式: QTA, PTQ 深度学习 (DL) 模型的训练阶段包括学习大量密集的浮点权重矩阵&#xff0c;这导致推理过程中需要进行大量的浮点计算。 研究表明&#xff0c;可以通过强制某些权重为零来跳过其中许多计算&#xff0c;而对最终精度的影响很小。 与此同时…

【学习】企业申请DCMM原来有这么多的好处

DCMM&#xff0c;即数据管理能力成熟度评估模型&#xff08;Data management Capability Maturity Model&#xff09;&#xff0c;是我国在数据管理领域首个正式发布的国家标准。DCMM的核心目的是帮助企业利用先进的数据管理理念和方法&#xff0c;建立和评价自身的数据管理能力…

JAVA------基础篇

java基础 1.JDK JDK :java development kit JRE&#xff1a;java runtime environment JDK包含JRE java跨平台&#xff1a;因为java程序运行依赖虚拟机&#xff0c;虚拟机需要有对应操作系统的版本&#xff0c;而jre中有虚拟机。 当你想要在Linux系统下运行&#xff0c;则需要…

U盘未格式化?数据恢复大揭秘!

在日常办公和生活中&#xff0c;U盘已成为我们不可或缺的数据存储工具。然而&#xff0c;有时我们会遇到这样一个令人头疼的问题&#xff1a;原本正常使用的U盘&#xff0c;突然提示“未格式化”&#xff0c;里面的文件似乎都消失不见了。面对这种情况&#xff0c;很多人会感到…

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题&#xff0c;即使是非zookeeper的节点&#xff0c;或者是非集群内部节点&#xff0c;也可以通过nc扫描2181端口&#xff0c;获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述&#xff1a;CVE-2018-8012: A…