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

文章目录

  • 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)


写在最后

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

函数进阶-Python

师从黑马程序员 函数中多个返回值的接收 def test_return():return 1,"hello",3x,y,ztest_return() print(x) print(y) print(z) 多种参数的使用 函数参数种类 位置参数 关键字参数 def user_info(name,age,gender):print(f"姓名是{name},年龄是:{age},性别是…

Halcon深度学习项目实战

Halcon在机器视觉中的价值主要体现在提供高效、可扩展、灵活的机器视觉解决方案&#xff0c;帮助用户解决各种复杂的机器视觉问题&#xff0c;提高生产效率和产品质量。 缩短产品上市时间 Halcon的灵活架构使其能够快速开发出任何类型的机器视觉应用。其全球通用的集成开发环…

「媒体宣传」如何针对不同行业制定媒体邀约方案

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 针对不同行业制定媒体邀约方案时&#xff0c;需要考虑行业特点、目标受众、媒体偏好以及市场趋势等因素。 一、懂行业 先弄清楚你的行业是啥样&#xff0c;有啥特别之处。 了解行业的热…

Linux(CentOS7) 安装 Nginx

目录 下载 上传 解压 生成 Makefile 编译与安装 启动 nginx 创建软链接 常用命令 下载 官网地址&#xff1a; nginx: downloadhttps://nginx.org/en/download.html选择稳定版本&#xff0c;也可以指定需要的版本下载 上传 将下载好的 tar 包上传到 Linux 服务器…

大华股份监控存在高危漏洞【附POC】

漏洞描述 大华DSS是大华的大型监控管理应用平台&#xff0c;支持几乎所有涉及监控等方面的操作&#xff0c;支持多级跨平台联网等操作。可将视频监控、卡口拍照、 区间测速 、电子地图、违章查询系统等诸多主流应用整合在一起&#xff0c;实现更加智能、便捷的分级查询服务。 …

【机器学习】原理+实例, 一文掌握 精确率、召回率与F1分数,再也不迷路。

精确率、召回率与F1分数 1、引言2、定义2.1 精确率2.2 召回率2.3 F1分数2.4 二分类任务2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;你在给我详细的唠叨唠叨 精确率&#xff0c;召回率和F1分数。 小鱼&#xff1a;这…这不是机器学习基本知识吗 小屌丝&a…

双亲委派机制总结

回顾了一下双亲委派机制&#xff0c;在这记录记录&#xff0c;下一篇会基于打破双亲委派机制来更新 1. 类加载&#xff1a; 多个java文件经过编译打包后生成可运行jar包&#xff0c;最后启动程序。首先需要通过类加载器把主类加载到JVM。主类在运行过程中如果使用到其他类&a…

Digital Image processing (DIP)

Camera FOV: Filed of view DOV: deep of view 景深 被F f/D 衡量&#xff0c;f 是焦距&#xff0c;D 是光圈大小。 当确定好了景深后&#xff0c;如何光线较暗&#xff0c;则需要补光&#xff0c;或者适当延长曝光时间&#xff08;快门&#xff09; 分辨率、像素尺寸&…

小学生古诗文大会往届真题测一测和独家详细解析(题目来自官方)

新学期开学一眨眼已经过了一个多月了&#xff0c;有家长朋友开始关心2024年上海市小学生古诗文大会什么时候开始&#xff1f;如何准备小学生古诗文大会&#xff1f;如何激发孩子学习古诗词的兴趣&#xff1f;如何提高小学古诗词和古诗文大会的学习成绩&#xff1f;... 最近&…

Deepin中定义 ll 文件查看命令

Deepin中定义 ll 文件查看命令 一、概述1. 在终端中使用2. 配置本用户使用 一、概述 在Ubuntu中习惯使用 ll 命令作为查看文件系统数据&#xff0c;在Deepin中无法使用此命令。我们可以用ls命令去组装一个ll命令。 1. 在终端中使用 我们如果只使用一次&#xff0c;我们可以用…

流量调度平台:优化资源配置,提升用户体验

随着互联网和移动互联网的快速发展&#xff0c;流量调度平台作为一种关键的技术解决方案&#xff0c;正成为各行业提高资源利用率、优化用户体验的重要工具。本文将深入探讨流量调度平台的意义、特点以及在不同领域的应用场景。 ### 什么是流量调度平台&#xff1f; 流量调度…

俚语加密漫谈

俚语加密是一种古老而有效的通信方式&#xff0c;将特定词语或短语在群体内赋予特殊含义&#xff0c;从而隐藏真实信息。类似于方言&#xff0c;它在历史上的应用不可忽视。随着计算机时代的到来&#xff0c;现代密码学通过数学运算编织密语&#xff0c;使得加密变得更加高深莫…

Rust编程(二)语法和数据类型

编程规范 类C语法&#xff0c;函数需要定义&#xff0c;指令需要以&#xff1b;结尾。需要大括号{} 文件名&#xff0c;变量&#xff0c;函数命名使用snake case&#xff0c;eg&#xff1a;new_function() 结构体&#xff0c;特征命名&#xff0c;使用大驼峰命名&#xff0c;e…

舵机烧录

舵机烧录 一、硬件连接1、准备物资2、连接&#xff08;1&#xff09;舵机线一侧连接舵机控制板&#xff0c;另一侧连接舵机&#xff08;2&#xff09;老安卓线一侧连接舵机控制板&#xff0c;一侧连接电脑&#xff08;3&#xff09;接上低压电池 二、软件使用1、打开舵机烧录软…

JavaScript高架(二)-V8引擎下

书归上回 ECS&#xff08;Execution Context Stack&#xff09; V8引擎为了执行代码, V8引擎内部会有一个执行上下文栈Execution Context Stack&#xff08;ESC函数调用栈)&#xff0c;当首次加载JS的时候就会创建一个Execution Context Stack(ECS)&#xff0c;它是用于执行代…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗&#xff1f;为什么 原因&#xff1a;当使用const声明一个对象或数组时&#xff0c;实际上是保证了对象或数组的引用不会被修改&#xff0c;但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

ChatGPT赋能大气科学:GPT与Python结合应用遥感降水数据处理、ERA5大气再分析数据的统计分析、干旱监测及风能和太阳能资源评估等

目录 专题一 AI领域常见工具讲解 专题二 POE平台及ChatGPT使用方法 专题三 提示词工程 专题四 科研常见应用场景 专题五 Python简明教程 专题六 GPT科研绘图 专题七 GPT辅助下载数据 专题八 遥感降水数据 专题九 数据产品评估 专题十 ERA5全球大气再分析数据 专题十…

python和Vue开发的RBAC用户角色权限管理系统

后端框架&#xff1a;python的FastAPI作为后端服务和python-jose作为JWT认证 前端框架&#xff1a;Vue3构建页面和Vue Router作为路由管理&#xff0c;Pinia作为数据存储&#xff0c;Vite作为打包工具 可以实现菜单控制和路由控制&#xff0c;页面里面有按钮权限控制&#xf…

【深度学习|基础算法】2.AlexNet学习记录

AlexNet示例代码与解析 1、前言2、模型tips3、模型架构4、模型代码backbonetrainpredict 1、前言 AlexNet由Hinton和他的学生Alex Krizhevsky设计&#xff0c;模型名字来源于论文第一作者的姓名Alex。该模型以很大的优势获得了2012年ISLVRC竞赛的冠军网络&#xff0c;分类准确率…

【无标题】C高级325

练习1&#xff1a;输入一个数&#xff0c;实现倒叙123-》321 练习2&#xff1a;输入一个&#xff0c;判断是否是素数 练习3&#xff1a;输入一个文件名&#xff0c; 判断是否在家目录下存在, 如果是一个目录&#xff0c;则直接输出是目录下的sh文件的个数 如果存在则判断是否是…