673. 最长递增子序列的个数
题目描述给定一个未排序的整数数组numsnumsnums 返回最长递增子序列的个数 。注意这个数列必须是严格递增的。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1并且存在5个子序列的长度为1因此输出5。算法原理前置算法假设现在有一个数组nums[2,3,1,2,3]nums [2, 3, 1, 2, 3]nums[2,3,1,2,3]要求一次遍历求出这个数组中最大值的出现次数怎么做呢可以设置两个变量mmm和cntcntcntmmm用来记录最大值cntcntcnt用来记录最大值的出现次数初始化mnums[0]cnt1m nums[0]cnt1mnums[0]cnt1从左到右遍历numsnumsnums遍历时nums[i]mnums[i] mnums[i]m说明nums[i]nums[i]nums[i]不可能是最大值什么也不做nums[i]mnums[i] mnums[i]m说明nums[i]nums[i]nums[i]是假定的最大值cntcntcntnums[i]mnums[i] mnums[i]m说明nums[i]nums[i]nums[i]更大是可能的最大值更新mnums[i],cnt1m nums[i], cnt 1mnums[i],cnt1当遍历完时mmm就保存了最大值cntcntcnt就保存了最大值的出现次数动态规划状态表示子序列问题一般以经验题目要求得到经验就是以某一个位置为结尾题目要求就是最长递增子序列的个数所以count[i]count[i]count[i]表示以iii位置为结尾的所有子序列中最长递增子序列的个数。由于不知道最长递增子序列长度所以根本求不了个数所以还需要一个数组lenlenlenlen[i]len[i]len[i]表示以iii位置为结尾的所有子序列中最长递增子序列的长度。状态表示可总结为count[i]count[i]count[i]以iii位置为结尾的所有子序列中最长递增子序列的个数len[i]len[i]len[i]以iii位置为结尾的所有子序列中最长递增子序列的长度状态转移方程以iii位置为结尾的子序列可以分为长度1 11和长度1 11的。根据前置算法可以同时填count,lencount, lencount,len两个表对于长度1 11的子序列最长递增子序列只有它自己所以len[i]1,count[i]1len[i] 1, count[i] 1len[i]1,count[i]1对于长度1 11的子序列一般是以i−1,i−2,...,0i-1, i-2, ..., 0i−1,i−2,...,0位置元素为结尾的最长递增子序列再带上iii位置上的元素。假设0ji−10 j i-10ji−1如果nums[j]nums[i]nums[j] nums[i]nums[j]nums[i]说明iii位置元素可以跟在以jjj位置元素为结尾的最长递增子序列之后此时新最长递增子序列的长度就是以jjj位置元素为结尾的最长递增子序列长度1 11也就是len[j]1len[j] 1len[j]1。如果len[j]1len[i]len[j] 1 len[i]len[j]1len[i]说明又出现了一个可能的最长递增子序列统计最长递增子序列的个数count[i]count[j]count[i] count[j]count[i]count[j]。如果len[j]1len[i]len[j] 1 len[i]len[j]1len[i]说明不可能是最长递增子序列此时啥也不做。如果len[j]1len[i]len[j] 1 len[i]len[j]1len[i]说明有更长的最长递增子序列更新len[i]len[j]1,count[i]count[j]len[i] len[j] 1, count[i] count[j]len[i]len[j]1,count[i]count[j]初始化以每个位置为结尾的最长递增子序列长度至少为111至少有111个所以初始化len,countlen, countlen,count为全111填表顺序从左到右返回值使用一次遍历的思想遍历len,countlen, countlen,count来找到最大的长度统计出现次数代码classSolution{public:intfindNumberOfLIS(vectorintnums){intnnums.size();vectorintlen(n,1),count(n,1);intmaxLenlen[0],cntcount[0];for(inti1;in;i){for(intji-1;j0;--j)// 找到以 [0, i-1] 结尾的递增子序列长度{if(nums[i]nums[j])// 能构成以 i 结尾的递增子序列{if(len[j]1len[i])// 当前递增子序列的长度 假定的最长递增子序列长度{count[i]count[j];// 更新最长递增子序列的个数}elseif(len[j]1len[i])// 当前递增子序列的长度 假定的最长递增子序列长度{len[i]len[j]1;// 更新最长递增子序列长度count[i]count[j];// 更新最长递增子序列的个数}}}if(len[i]maxLen){cntcount[i];}elseif(len[i]maxLen){maxLenlen[i];cntcount[i];}}returncnt;}};

相关新闻

2026论文双检新规避坑|别只查重不降AI痕!Okbiye实测,90%同学都在踩的毕业雷区

2026论文双检新规避坑|别只查重不降AI痕!Okbiye实测,90%同学都在踩的毕业雷区

2026年毕业最大误区:论文重复率过了,就等于稳过答辩。 现在高校早已不是单一查重审核,知网/维普查重率 AI写作痕迹检测双检并行成为硬性标准。很多同学花几百块查重、反复降重,最后重复率达标,却被AI机器痕迹判定不合…

2026/10/7 11:05:19 阅读更多 →
瑞芯微RV1126B开发板(EASY-EAI-PI2) 网络摄像头方案

瑞芯微RV1126B开发板(EASY-EAI-PI2) 网络摄像头方案

1. 方案简介 本方案将演示如何利用EASY-EAI-PI2以及MIPI-CSI摄像头制作一个【网络摄像头(IPCamera)】:两路MIPI-CSI摄像头分别单独输出两路流。 1.1 接线示意图 摄像头与板卡连接: https://www.easy-eai.com/ (二维码自动识别) 板卡与局域网连接&am…

2026/10/14 3:24:16 阅读更多 →
UE4 Shader变体优化实战:从源头控制到打包剔除,解决性能与包体膨胀

UE4 Shader变体优化实战:从源头控制到打包剔除,解决性能与包体膨胀

1. 项目概述:Shader变体,一个被忽视的性能与包体“黑洞” 如果你是一名UE4开发者,尤其是负责过移动端或对包体大小有严格要求的项目,那么“Shader变体”这个词,很可能已经让你头疼过不止一次了。它不像一个明显的Bug那…

2026/10/13 12:00:00 阅读更多 →

最新新闻

Codex国内API配置指南:环境变量、模型映射与网关接入实战

Codex国内API配置指南:环境变量、模型映射与网关接入实战

简介:面向国内 Windows 开发者使用 OpenAI Codex 编码工具的需求,这份代码包提供了一条从环境准备到 API 联通验证的完整实践路径。资源先给出 Node.js 与 npm 的检查方法,并用一键安装脚本降低新手搭建门槛;随后梳理 Codex CLI 的…

2026/10/14 4:01:42 阅读更多 →
PyTorch深度解析:张量契约、autograd引擎与显存博弈

PyTorch深度解析:张量契约、autograd引擎与显存博弈

1. 这不是“学PyTorch”,而是重建你对深度学习工程的认知很多人点开一篇叫“pytorch”的文章,下意识以为要读教程、抄代码、跑通MNIST——结果三小时后卡在CUDA out of memory,五小时后被autograd的梯度计算路径绕晕,七小时后发现…

2026/10/14 4:01:42 阅读更多 →
roLabelImg旋转框标注工具实战:从安装到格式转换全指南

roLabelImg旋转框标注工具实战:从安装到格式转换全指南

简介:roLabelImg 是一款面向目标检测数据生产的旋转框标注工具源码,专为遥感影像、OCR 文字检测等需贴合旋转目标的场景设计,适合计算机视觉研究者、算法工程师及标注工具二次开发人员使用。与普通矩形标注不同,该工具支持任意角度…

2026/10/14 4:01:42 阅读更多 →
自定义Emoji实现指南:从短代码映射到前端渲染

自定义Emoji实现指南:从短代码映射到前端渲染

如果你负责过一个带聊天功能的Web应用,大概率收到过这类需求:用户想把一张自制表情包图片,当作Emoji一样发出去。我最近在某协作平台重做了这个功能,从上传、解析到渲染,踩了一串坑,也把整套实现思路理顺了…

2026/10/14 4:01:42 阅读更多 →
内蒙古SHP数据清洗与道路网拓扑处理实战指南

内蒙古SHP数据清洗与道路网拓扑处理实战指南

简介:这份资源是2022年7月整理的内蒙古自治区GIS矢量数据集,面向地理信息研究者、交通规划人员、区域经济分析者及高校师生,用于行政区划研究、路网分析与空间制图等场景。压缩包约26.32MB,内含省级、地市、区县三级行政边界&…

2026/10/14 4:01:42 阅读更多 →
办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

简介:办公设备管理系统OAMS是一套面向企事业单位设备管理员与信息化开发者的全生命周期管理解决方案,覆盖采购、入库、领用、维修、报废等核心环节,适合需要落地资产台账、审批流程与统计报表的Java Web项目学习与二次开发。资源包共451个文件…

2026/10/14 4:00:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →