news 2026/7/4 19:31:29

LeetCode热题100--300. 最长递增子序列--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--300. 最长递增子序列--中等

题目

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1

题解

classSolution{publicintlengthOfLIS(int[]nums){int[]tails=newint[nums.length];intres=0;for(intnum:nums){inti=0,j=res;while(i<j){intm=(i+j)/2;if(tails[m]<num)i=m+1;elsej=m;}tails[i]=num;if(res==j)res++;}returnres;}}

解析

出自:300. 最长递增子序列(动态规划 + 二分查找,清晰图解)

classSolution{publicintlengthOfLIS(int[]nums){// tails[i] 表示长度为 i+1 的递增子序列中,最小的末尾元素值// 例如:tails[0] 是长度为1的递增子序列的最小结尾int[]tails=newint[nums.length];// res 表示当前找到的最长递增子序列的长度(也是 tails 数组的有效长度)intres=0;// 遍历数组中的每一个数字for(intnum:nums){// 在 tails[0...res-1] 中二分查找第一个 >= num 的位置// i 是左边界,j 是右边界(初始为当前有效长度 res)inti=0,j=res;// 二分查找:寻找插入位置(lower bound)while(i<j){// 计算中点(避免溢出,但此处安全)intm=(i+j)/2;// 如果 tails[m] < num,说明 num 可以接在 tails[m] 后面形成更长序列// 所以目标位置在右半部分if(tails[m]<num){i=m+1;}else{// tails[m] >= num,说明可以尝试用 num 替换 tails[m] 使结尾更小// 目标位置在左半部分(包括 m)j=m;}}// 将 num 放到找到的位置 i:// - 如果 i == res,说明 num 比所有 tails 元素都大,可以扩展 LIS 长度// - 否则,用 num 替换 tails[i],保持长度不变但让结尾更小(贪心)tails[i]=num;// 如果插入位置 i 等于原来的 res(即 j == res),说明 LIS 长度增加了if(res==j){res++;}}// 返回最长递增子序列的长度returnres;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 12:53:02

AI搜索引擎品牌提及指南:用数据驱动策略,让品牌被AI主动推荐

“为什么ChatGPT不提我们的品牌&#xff1f;AI搜索结果里根本看不到我们的身影&#xff1f;”——这是如今SEO从业者和品牌方最常面临的灵魂拷问。在AI成为信息获取核心渠道的时代&#xff0c;品牌能否被AI搜索引擎提及&#xff0c;直接关系到线上曝光与商业转化。但想要获得AI…

作者头像 李华
网站建设 2026/7/1 15:39:28

Windows 10下Miniconda搭建YOLOv5与LabelImg

Windows 10下Miniconda搭建YOLOv5与LabelImg 在目标检测项目的开发过程中&#xff0c;最让人头疼的往往不是模型调参或数据标注&#xff0c;而是环境配置——明明代码写得没问题&#xff0c;运行时却报出“DLL加载失败”、“torch版本不兼容”或者“pip install 卡死不动”。尤…

作者头像 李华
网站建设 2026/7/1 14:32:58

基于串口服务器的Modbus通讯优化实践

基于串口服务器的Modbus通讯优化实践 在某大型化工厂的中央控制室里&#xff0c;一次突如其来的通信中断导致整条生产线停摆。排查整整花了6小时——问题源头竟是一台距离主控柜80米远、接线松动的温度变送器。这种“一点故障&#xff0c;全线瘫痪”的窘境&#xff0c;在采用传…

作者头像 李华
网站建设 2026/7/1 21:40:16

使用tf.image.resize_bilinear进行图像双线性插值缩放

使用 tf.image.resize_bilinear 实现高质量图像缩放 在深度学习的视觉任务中&#xff0c;图像预处理是不可忽视的一环。无论是训练分类模型前对输入图片进行归一化&#xff0c;还是在语义分割或姿态估计中保持空间结构一致性&#xff0c;图像缩放的质量直接影响最终模型的表现。…

作者头像 李华