当前位置: 首页 > news >正文

代码随想录 300.最长递增子序列

思路:根据题意得,子序列是由数组派生而来的序列,删除(或不删除)数组中的元素不改变其余元素的顺序。

动规五部曲:

1.dp[i]的定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。

2.确定递推公式(状态转移方程):

(1)位置i的最长递增子序列等于j从0到i - 1各个位置的最长递增子序列 + 1的最大值。

(2)所以:if(nums[i] > nums[j]) dp[i] = max(dp[i],dp[j] + 1)。(这里不是将dp[i]与dp[j] + 1比较,而是选取dp[j] + 1的最大值)。

3.dp[i]的初始化:每一个i,对应的dp[i](即最长递增子序列)起始大小至少都是1。

4.确定遍历顺序:

(1)dp[i]是由0到i - 1各个位置的最长递增子序列推导而来,因此遍历i一定是从前向后遍历。

(2)j就是遍历0到i - 1,因此从前到后或从后到前的遍历顺序都无所谓,只要把0到i - 1的元素都遍历到就行。默认习惯为从前到后遍历。

遍历i的循环在外层,遍历j的循环在内层,代码如下所示:

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]; // 取长的子序列 }

5.举例推导dp数组:输入:[0,1,0,3,2],dp数组的变化如下所示。

注意子序列和子数组的区别和计算方式:

(1)子序列:位置可以不连续,因此可能性更多,且是外层for i,内层for j代表所有的可能性。

(2)子数组:位置必须连续,因此是单层for循环即可代表所有的可能性,且子数组问题考虑的子数组必须以nums[i]结尾。

附代码:

class Solution { public int lengthOfLIS(int[] nums) { if(nums.length <= 1){ return nums.length; } int res = 1; int[] dp = new int[nums.length]; for(int i = 0;i < nums.length;i++){ dp[i] = 1; } for(int i = 1;i < nums.length;i++){ for(int j = 0;j < i;j++){ if(nums[i] > nums[j]){ dp[i] = Math.max(dp[i],dp[j] + 1); } } res = Math.max(res,dp[i]); } return res; } }
http://www.jsqmd.com/news/577777/

相关文章:

  • Rsbuild性能优化终极指南:10个技巧让你的构建速度翻倍
  • 告别“伪自动”:贝京科技全自动智能猫砂盆如何通过技术创新真正解放双手? - 企业推荐官【官方】
  • 医疗陪诊顾问报名入口,认准这个“国家队”证书认证路径!(附报名培训考试指南) - 企业推荐官【官方】
  • 背包问题入门:从0-1背包到动态规划,一步步教你理解算法核心
  • 109. 如何配置 Rancher 部署的环境变量
  • 全方位SEO指南,助你从零起步提升网站流量表现
  • 腾讯游戏AI框架behaviac最佳实践:10个提升开发效率的核心技巧
  • Pixel Aurora Engine作品集:基于大气/明亮/交互哲学的100+原创像素图
  • 达梦数据库dblink连接丢失?别慌,检查这两个配置文件就够了(附MAL配置详解)
  • 2026年,从零起步在义乌开启电商新征程! - 企业推荐官【官方】
  • CO2驱水二阶PDE两相流模拟:Comsol超负驱替过程与油气藏CCUS研究
  • 2026年4月丨SD-WAN服务商排名全景:市场格局深度解析 - 企业推荐官【官方】
  • 像素剧本圣殿效果展示:生成含镜头切换提示与音效标注的专业脚本
  • 长尾关键词在提升SEO效果中的实战应用与策略探讨
  • 雯雯的后宫-造相Z-Image-瑜伽女孩真实案例分享:10组高质量瑜伽体式生成效果展示
  • 射频匹配电路选型避坑指南:L、T、Π型网络到底怎么选?用ADS一测便知
  • DLSS Swapper深度解析:游戏性能优化实战指南
  • 地类变化流向分析与可视化工具——基于年度变更调查数据的智能统计系统
  • 一次性手套独立包装定制哪家企业技术强 - 企业推荐官【官方】
  • 保姆级教程:从Seurat对象到热图,用DecoupleR完整跑通单细胞转录因子活性分析
  • Qwen3.5-2B轻量化优势:冷启动时间<8秒,边缘设备实时响应保障
  • yz-bijini-cosplay效果惊艳展示:高精度布料褶皱、金属反光、发丝细节呈现
  • Local Moondream2一键部署方案:省去依赖冲突的烦恼快速运行
  • 智能座舱多摄像头环视系统:如何用MIPI C-PHY减少1/3布线(附带宽计算)
  • ​告别二次污染:现代家用清洁工具技术演进 - 企业推荐官【官方】
  • 电力工程铁塔四角坐标自动计算与征地图绘制Excel工具
  • PCL2-CE Minecraft启动器完全指南:打造专属游戏体验
  • Vibe coding对程序员的影响
  • Fan Control终极指南:Windows风扇控制软件从入门到精通
  • SiameseAOE模型效果展示:支持否定修饰‘不清晰’‘不太耐用’‘几乎没有售后’准确识别