【算法与数据结构】300、674、LeetCode最长递增子序列 最长连续递增序列

news2025/2/3 9:57:56

文章目录

  • 一、300、最长递增子序列
  • 二、674、最长连续递增序列
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、300、最长递增子序列

在这里插入图片描述

  思路分析

  • 第一步,动态数组的含义。 d p [ i ] dp[i] dp[i]代表 i i i之前包括以 i i i结尾的最长递增子序列的长度。我们在做递增比较的时候,两个子序列分别以 n u m s [ i ] nums[i] nums[i] n u m s [ j ] nums[j] nums[j]作为结尾。
  • 第二步,递推公式。位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 + 1 的最大值。
	if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
  • 第三步,元素初始化。dp数组中的所有元素至少为1,因此都初始化为1。
  • 第四步,递归顺序。一共有两层循环,外层循环遍历整个nums数组,里层循环遍历 [ 0 , i − 1 ] [0,i-1] [0,i1]的nums数组。如果当前的nums[i]>nums[j]那么我们取 [ 0 , i − 1 ] [0,i-1] [0,i1]中最大的长度作为 d p [ i ] dp[i] dp[i]的值。
  • 第五步,打印结果。 d p [ n u m s . s i z e ( ) − 1 ] dp[nums.size()-1] dp[nums.size()1]未必是最大的,因此需要筛选出最大的结果返回。
	if (dp[i] > result) result = dp[i];

  程序如下

// 300、最长递增子序列
class Solution {
public:
	int lengthOfLIS(vector<int>& nums) {
		vector<int> dp(nums.size(), 1);
		int result = 1;
		for (int i = 1; i < nums.size(); i++) {
			for (int j = 0; j < i; j++) {
				if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
			}
			if (dp[i] > result) result = dp[i];
		}
		return result;
	}
};

复杂度分析:

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2)
  • 空间复杂度: O ( n ) O(n) O(n)

二、674、最长连续递增序列

在这里插入图片描述

  思路分析:本题和300、LeetCode最长递增子序列类似,区别在于最长子序列从非连续到连续。因为要求连续的递增子序列,那么我们只需要考察连续这个性质,而连续递增只需要对比nums数组中相邻的两个数。

  • 第一步,动态数组的含义。 d p [ i ] dp[i] dp[i]代表 i i i之前包括以 i i i结尾的最长递增子序列的长度。我们在做递增比较的时候,两个子序列分别以 n u m s [ i ] nums[i] nums[i] n u m s [ i − 1 ] nums[i-1] nums[i1]作为结尾。
  • 第二步,递推公式。本题只要一个循环,如果 n u m s [ i ] nums[i] nums[i] 大于 n u m s [ i − 1 ] nums[i-1] nums[i1],那么dp[i] = dp[i - 1] + 1。
	if (nums[i] > nums[i-1]) dp[i] = dp[i - 1] + 1;
  • 第三步,元素初始化。dp数组中的所有元素至少为1,因此都初始化为1。
  • 第四步,递归顺序。循环从 i = 1 i=1 i=1开始。
  • 第五步,打印结果。 d p [ n u m s . s i z e ( ) − 1 ] dp[nums.size()-1] dp[nums.size()1]未必是最大的,因此需要筛选出最大的结果返回。
	if (dp[i] > result) result = dp[i];

  程序如下

// 674、最长连续递增序列
class Solution2 {
public:
	int findLengthOfLCIS(vector<int>& nums) {
		vector<int> dp(nums.size(), 1);
		int result = 1;
		for (int i = 1; i < nums.size(); i++) {
			if (nums[i] > nums[i-1]) dp[i] = dp[i - 1] + 1;
			if (dp[i] > result) result = dp[i];
		}
		return result;
	}
};

复杂度分析:

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

三、完整代码

# include <iostream>
# include <vector>
using namespace std;

// 300、最长递增子序列
class Solution {
public:
	int lengthOfLIS(vector<int>& nums) {
		vector<int> dp(nums.size(), 1);
		int result = 1;
		for (int i = 1; i < nums.size(); i++) {
			for (int j = 0; j < i; j++) {
				if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
			}
			if (dp[i] > result) result = dp[i];
		}
		return result;
	}
};

// 674、最长连续递增序列
class Solution2 {
public:
	int findLengthOfLCIS(vector<int>& nums) {
		vector<int> dp(nums.size(), 1);
		int result = 1;
		for (int i = 1; i < nums.size(); i++) {
			if (nums[i] > nums[i-1]) dp[i] = dp[i - 1] + 1;
			if (dp[i] > result) result = dp[i];
		}
		return result;
	}
};

int main() {
	vector<int> nums = { 1,3,5,4,7 };
	Solution2 s1;
	int result = s1.findLengthOfLCIS(nums);
	cout << result << endl;
	system("pause");
	return 0;
}

end

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

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

相关文章

什么是接口的幂等性,如何保证接口的幂等性?

✅作者简介&#xff1a;大家好&#xff0c;我是Leo哥&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo哥的博客 &#x1f49e;当前专栏&#xff1a; Java ✨特色专栏&#xff1a; MyS…

如何在Windows部署GoLand并通过SSH远程连接Linux服务器

文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器&#xff0c;并结合cpolar内…

想好新年去哪了吗?合合信息扫描全能王用AI“留住”年味

还有不到十天&#xff0c;除夕就要到了。近几年春节假期中&#xff0c;有人第一次带着孩子直击海面冰风&#xff0c;坐船回老家&#xff1b;也有人选择“漫游”国内外&#xff0c;在旅行中迎接新春的朝气。合合信息旗下扫描全能王APP通过AI扫描技术&#xff0c;提供了一种全新的…

白皮书发布,石油石化数字孪生加速

近日&#xff0c;《数字石化 孪生智造——石油石化数字孪生白皮书》发布。白皮书聚焦石油石化行业发展机遇&#xff0c;剖析数字孪生技术在行业中的案例实践与应用场景&#xff0c;展望石油石化企业未来孪生发展新态势。 当前&#xff0c;国家大力推动减污降碳协同增效&#x…

【机器学习】基于K-近邻的车牌号识别

实验四: 基于K-近邻的车牌号识别 1 案例简介 ​ 图像的智能处理一直是人工智能领域广受关注的一类技术&#xff0c;代表性的如人脸识别与 CT 肿瘤识别&#xff0c;在人工智能落地的进程中发挥着重要作用。其中车牌号识别作为一个早期应用场景&#xff0c;已经融入日常生活中&…

vue2使用echarts自定义tooltip内容

先上最终效果图 # 实现过程&#xff1a; 一、下载引入echarts 下载 npm install echarts --save在main.js中引入 import * as echarts from "echarts"; Vue.prototype.$echarts echarts;二、使用 <template><div id"myechart" style"…

[香橙派开发系列]使用蓝牙和手机进行信息的交换

文章目录 前言一、HC05蓝牙模块1.HC05概述2.HC05的连接图3.进入HC05的命令模式4.常用的AT指令4.1 检查AT是否上线4.2 重启模块4.3 获取软件版本号4.4 恢复默认状态4.5 获取蓝牙的名称4.6 设置蓝牙模块的波特率4.7 查询蓝牙的连接模式4.8 查询模块角色 5.连接电脑6.通过HC05发送…

Python爬虫的基本原理

我们可以把互联网比作一张大网&#xff0c;而爬虫&#xff08;即网络爬虫&#xff09;便是在网上爬行的蜘蛛。把网的节点比作一个个网页&#xff0c;爬虫爬到这就相当于访问了该页面&#xff0c;获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系&#xff0c;这样…

C#——三角形面积公式

已知三角形的三个边&#xff0c;求面积&#xff0c;可以使用海伦公式。 因此&#xff0c;可以执行得到三角形面积公式的计算方法代码如下&#xff1a; /** / <summary>* / 三角形面积公式* / </summary>* / <param name"a">边长a</param>*…

在idea中使用maven编译包,直接打包到远程环境上去了

执行指令 mvn clean install编译包的结果指向远程环境上去了 报错信息 No SSH configuration for 修改idea远程连接配置&#xff0c;改回编包打包到本地。 settings -> Build,Execution,Deployment -> Run Targets 删除掉这部分配置即可。 如果想改成直接编包到远程…

latex表格使用总结

参考博客 https://blog.csdn.net/TH_guan/article/details/124878398 测试了一下latex里面表格的用法 \documentclass{article} \usepackage{booktabs} % 导入三线表需要的宏包 \usepackage{booktabs} % 导入三线表需要的宏包 \usepackage{longtable}% 导入跨页表格所需宏包 …

【打赏】完美运营的最新视频打赏系统

完美运营的最新视频打赏系统优于市面上95%的打赏系统&#xff0c;与其他打赏系统相比&#xff0c;功能更加强大&#xff0c;完美运营且无bug。支付会调、短链接生成、代理后台、价格设置和试看功能等均没有问题。 以上为原简介&#xff0c;经测试验证。成功搭建并可以正常进入…

【GitHub项目推荐--大语言模型课程】【转载】

Large Language Model Course Large Language Model Course&#xff08;大型语言模型课程&#xff09;是一个开源项目&#xff0c;该课程分为三个部分&#xff1a; LLM 基础&#xff1a;涵盖了数学、Python 和神经网络的基础知识。 LLM 科学家&#xff1a;专注于学习如何使用…

DBeaver连接ClickHouse,时间少了8小时

文章目录 业务场景问题描述解决办法 业务场景 表字段time&#xff0c;类型为Datetime&#xff0c;插入时间格式为“yyyy-MM-dd HH:mm:ss” 问题描述 插入表中的时间比正常给的时间少了8小时。如&#xff0c;给定时间为&#xff1a; 2024-01-30 14:52:08 在表中显示的时间为&…

生物素-PEG4-酪胺,Biotin-PEG4-TSA,应用于酶联免疫吸附实验

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;生物素-PEG4-酪胺&#xff0c;Biotin-PEG4-Tyramide&#xff0c;Biotin-PEG4-TSA 一、基本信息 产品简介&#xff1a;Biotin PEG4 Tyramine is a reagent used for tyramine signal amplification (TSA) through ca…

前端通过nginx,访问一个文件夹里面的全部数据,nginx 咋配置

目录 1 问题2 实现 1 问题 前端通过nginx,访问一个文件夹里面的全部数据&#xff0c;nginx 咋配置 2 实现 location /logs {alias /mnt/www/logs/;autoindex on; }

【Git】03 图形化工具

文章目录 一、右击菜单二、打开仓库三、可视化所有分支历史四、总结 一、右击菜单 二、打开仓库 三、可视化所有分支历史 四、总结 图形化工具了解一下&#xff0c;要懂得在哪里能找到。

echarts条形图添加滚动条

效果展示: 测试数据: taskList:[{majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {maj…

帅气的性能监控平台Grafana(Windows下使用Grafana监控系统指标与GPU指标)

帅气的性能监控平台Grafana&#xff08;Windows下使用Grafana监控系统指标与GPU指标&#xff09; 前情提要 系统环境准备 windows_exporter下载 nvidia_gpu_exporter下载 prometheus下载 Grafana下载 安装指导 windows_exporter安装与nvidia_gpu_exporter安装 promethe…

leetcode热题100.二叉树中的最大路径和

Problem: 124. 二叉树中的最大路径和 文章目录 题目解题方法复杂度Code 题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 …