news 2026/4/16 11:10:05

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/4/13 20:37:16

java springboot基于微信小程序的农村事务服务管理交流平台系统(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要&#xff1a;为解决农村事务信息传递不畅、服务管理效率低下等问题&#xff0c;…

作者头像 李华
网站建设 2026/4/8 14:46:27

海康威视工业相机集成YOLO与PyQt实现检测报警

海康威视工业相机集成YOLO与PyQt实现检测报警 在现代智能制造场景中&#xff0c;产线对视觉检测系统的实时性、准确性和稳定性提出了极高要求。一套“看得清、判得准、响应快”的智能检测系统&#xff0c;已成为自动化质检的核心环节。本文将分享一个实战项目&#xff1a;基于…

作者头像 李华
网站建设 2026/4/16 11:05:19

Open-AutoGLM如何彻底改变GitHub自动化?9大应用场景深度解析

第一章&#xff1a;Open-AutoGLM与GitHub自动化的新范式Open-AutoGLM 是一个开源的自动化代码生成框架&#xff0c;专为提升 GitHub 项目的开发效率而设计。它结合了大语言模型的强大推理能力与 CI/CD 流程的标准化实践&#xff0c;实现了从问题识别到代码提交的端到端自动化。…

作者头像 李华
网站建设 2026/4/16 10:46:56

Win10下TensorFlow-GPU 2.2.0安装避坑指南

Windows 10 下 TensorFlow-GPU 2.2.0 安装避坑实录 在尝试复现一篇经典论文时&#xff0c;我遇到了一个老生常谈却始终让人头疼的问题&#xff1a;如何在 Windows 10 上成功运行 TensorFlow-GPU 2.2.0&#xff1f;这个版本虽已不再主流&#xff0c;但在许多教学项目、课程作业…

作者头像 李华
网站建设 2026/4/14 14:24:58

LabVIEW调用Halcon的两种方法详解

LabVIEW 调用 Halcon 的两种方法详解 在工业自动化和机器视觉系统开发中&#xff0c;我们常常面临一个现实问题&#xff1a;算法团队在 Halcon 中已经完成了高精度的图像处理原型&#xff0c;而工程团队需要用 LabVIEW 构建整套测控上位机系统。如何让这两者无缝协作&#xff…

作者头像 李华
网站建设 2026/4/11 0:26:32

解决MindSpore静态图query_embeds传参错误

解决 MindSpore 静态图模式下 query_embeds 多值传参错误 在多模态模型开发中&#xff0c;QFormer、BLIP 这类引入可学习查询向量&#xff08;query_embeds&#xff09;的结构正变得越来越常见。它们通过跨模态注意力机制&#xff0c;让语言模型“主动提问”视觉编码器&#xf…

作者头像 李华