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

【重点】【DP】300.最长递增子序列

题目
参考两个题目:
300.最长递增子序列
354. 俄罗斯套娃信封问题

Python

法1:动态规划

classSolution:deflengthOfLIS(self,nums:List[int])->int:n=len(nums)dp=[1]*n max_len=1foriinrange(n):forjinrange(i):ifnums[j]<nums[i]:dp[i]=max(dp[i],dp[j]+1)max_len=max(max_len,dp[i])returnmax_len

法2:二分+谈心

frombisectimportbisect_left# 在力扣中不用importclassSolution:deflengthOfLIS(self,nums:List[int])->int:arr=[]# dp[i]表示长度为i+1的最小元素forxinnums:idx=bisect_left(arr,x)ifidx==len(arr):arr.append(x)else:arr[idx]=xreturnlen(arr)

补充获取最长递增子序列

classSolution:deflengthOfLIS(self,nums:List[int])->List[int]:ifnotnums:return[]n=len(nums)dp=[1]*n# dp[i] 表示以 nums[i] 结尾的 LIS 长度prev=[-1]*n# 前驱索引# 计算 dp 和 prevforiinrange(n):forjinrange(i):ifnums[j]<nums[i]anddp[j]+1>dp[i]:dp[i]=dp[j]+1prev[i]=j# 找到最大长度的结尾索引max_len=max(dp)end_idx=dp.index(max_len)# 重建序列lis=[]curr=end_idxwhilecurr!=-1:lis.append(nums[curr])curr=prev[curr]returnlis[::-1]

Java

法1:DP

必须掌握,O(N^2) + O(N)

classSolution{publicintlengthOfLIS(int[]nums){int[]dp=newint[nums.length];Arrays.fill(dp,1);intres=1;for(inti=1;i<nums.length;++i){for(intj=0;j<i;++j){if(nums[i]>nums[j]){dp[i]=Math.max(dp[i],dp[j]+1);}}res=res>dp[i]?res:dp[i];}returnres;}}

法2:二分搜索

O(NlgN) + O(N)
patience sorting(耐心排序),参考《算法小抄》p100,介绍详细!

http://www.jsqmd.com/news/596269/

相关文章:

  • 深度解析Godot PCK资源提取:二进制格式逆向与内存映射技术实现
  • Z-Image-Turbo-辉夜巫女保姆级教程:从部署到出图,小白也能轻松玩转
  • Java 反射(Reflection)
  • JavaScript变量声明终极指南:undefined与not defined的区别解析
  • OpenClaw浏览器自动化:Qwen3-14B实现智能网页数据采集
  • DJL与AWS AI服务集成:构建云端智能应用生态系统完整指南
  • AI率80%和40%降到20%,难度差了多少? - 我要发一区
  • 天津恒诚泰农业设施有限公司联系方式查询:关于获取官方联系渠道与农业设施采购的通用建议 - 品牌推荐
  • 【技术拆解】DCVC-RT:如何用五大创新让神经视频编码跑进实时时代?
  • 大学生HTML期末大作业——HTML+CSS+JavaScript王者荣耀
  • PP-DocLayoutV3入门教程:5分钟快速部署,合同论文版面分析实战
  • 购物卡闲置别浪费,天猫超市卡回收攻略! - 团团收购物卡回收
  • 动态规划实战:从硬币找零到最优解算法设计
  • 终极指南:5分钟掌握Awoo Installer,轻松搞定Switch游戏安装
  • PyTorch 2.8镜像多场景案例:短视频生成、数字人驱动、3D动画渲染预处理
  • 告别拼接URL!手把手教你封装HarmonyOS的POST请求工具类
  • Qwen3.5-9B-AWQ-4bit后端开发实战:构建高并发模型API服务
  • Matlab 2017b/2020a中文注释乱码?三步复制粘贴法,用记事本就能搞定
  • 探索开源鼠标指针的个性化世界:BlueArchive-Cursors使用指南
  • Natron Rotoscoping与跟踪技术:专业影视特效制作终极指南
  • 从UNET到UNETR++:5个真实医学数据集评测,看3D分割模型如何‘卷’效率与精度
  • 南北阁Nanbeige 4.1-3B效果对比:传统C语言算法与AI辅助实现的差异
  • FLUX.1-dev入门指南:适合开发者和研究者的快速图像生成实验
  • SRWE:突破Windows窗口控制的革命性实时编辑器
  • 如何有效应对搜索引擎算法的更新_网站用户体验对 SEO 推广有什么影响
  • 从展示到互动:实战构建一个带用户体系与数据分析的博客系统
  • LiuJuan Z-Image Generator实战落地:广告公司创意提案AI视觉预演
  • 如何将小爱音箱升级为AI语音助手:MiGPT完整实现方案
  • WiFi密码安全测试:如何用hashcat的掩码模式快速爆破简单密码?
  • Spring Boot项目整合weixin-java-pay,避开Illegal key size这个坑(Docker/云服务器实测)