news 2026/4/23 15:30:03

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/22 21:46:59

java springboot基于微信小程序的线上摄影约拍照系统(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要&#xff1a;随着摄影需求的增长&#xff0c;传统约拍方式存在信息对接不畅、流…

作者头像 李华
网站建设 2026/4/22 1:00:01

Java生成图片验证码的工具类实现

Java生成图片验证码的工具类实现 - 通用安全组件开发指南 在现代Web应用中&#xff0c;防止自动化脚本恶意注册、暴力破解或爬虫攻击是系统安全的重要一环。图形验证码作为一道简单而有效的防线&#xff0c;被广泛应用于登录、注册、支付等关键流程。然而&#xff0c;许多开发…

作者头像 李华
网站建设 2026/4/23 13:02:59

使用开源工具批量下载公众号文章

使用开源工具批量下载公众号文章与大模型时代的“一键式”开发实践 在内容创作和知识管理日益重要的今天&#xff0c;无论是追踪技术前沿的深度文章&#xff0c;还是整理行业动态的公众号推文&#xff0c;高效获取并结构化信息已成为开发者、研究者和内容运营者的刚需。而与此…

作者头像 李华
网站建设 2026/4/16 17:04:40

【智普开源Open-AutoGLM深度解析】:揭秘AutoGLM如何重塑AI自动化新格局

第一章&#xff1a;智普开源Open-AutoGLM深度解析Open-AutoGLM 是智普AI推出的一款面向自动化图学习任务的开源框架&#xff0c;旨在降低图神经网络&#xff08;GNN&#xff09;在实际场景中的应用门槛。该框架集成了自动特征工程、模型选择、超参优化与图结构预处理能力&#…

作者头像 李华
网站建设 2026/4/23 11:53:31

【独家】Open-AutoGLM本地化落地实录:千万级数据处理效率提升背后的秘密

第一章&#xff1a;本地Open-AutoGLM落地背景与核心价值随着大语言模型在自然语言处理领域的广泛应用&#xff0c;企业对数据隐私、推理效率和定制化能力的需求日益增强。将大型语言模型部署于本地环境&#xff0c;成为保障敏感信息不外泄、实现低延迟响应的重要路径。Open-Aut…

作者头像 李华
网站建设 2026/4/23 13:25:44

架构师必备:后端程序员需要了解的数仓知识

后端程序员平时除了接触业务代码、中间件、存储等&#xff0c;也难免会跟数仓有交集。下面结合笔者的经验和思考&#xff0c;从后端程序员的视角看数仓、做个总结&#xff0c;后续再跟数仓/BI argue的时候就不虚了&#x1f603; 分成两部分介绍&#xff1a;离线数仓、实时数仓…

作者头像 李华