news 2026/4/1 16:38:02

面试必看:递增的三元子序列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试必看:递增的三元子序列

LeetCode 334. 递增的三元子序列 题解

题目描述

给定一个整数数组nums,判断数组中是否存在下标满足 i < j < k的三元子序列,使得nums[i] < nums[j] < nums[k]。若存在满足条件的三元组,返回true,否则返回false

补充说明:子序列不要求原数组中的元素连续,仅需保证元素的下标顺序与原数组一致即可。

前置分析

在设计解法前,先梳理本题的核心特征,明确解题的约束条件与优化方向:

  1. 存在性判断:仅需验证是否存在一组符合条件的三元组,无需枚举所有解,可提前终止遍历;
  2. 下标顺序约束i<j<k的要求天然适配单次线性遍历,无需额外处理下标关系;
  3. 固定长度目标:目标子序列长度固定为3,无需适配通用长度的递增子序列问题;
  4. 无全局统计需求:仅需维护局部状态变量,无需存储全量数据,空间复杂度可优化至常数级。

结合以上特征,排除暴力枚举(时间复杂度O(n3)O(n^3)O(n3),效率过低)、动态规划(空间复杂度更高,冗余计算)等方案,贪心算法是本题的最优选择。

算法选择依据

贪心算法的核心思想是在每一步选择中都采取当前状态下的局部最优策略,最终推导出全局的可行解,与本题的特征高度匹配:

  1. 仅需判断可行性,无需计算最优解数值,贪心策略可直接满足需求;
  2. 针对长度为3的递增子序列,仅需维护两个局部变量即可记录状态,空间开销极低;
  3. 线性遍历的过程中,一旦找到符合条件的第三个元素,可立即返回结果,无需遍历完整数组;
  4. 下标顺序约束与贪心算法的单向遍历逻辑完全契合,无逻辑冲突。

解题思路

基于贪心策略,我们通过维护两个关键变量,持续更新数组遍历过程中的局部最小值,逐步缩小寻找目标元素的范围:

  1. 定义变量first:记录遍历过程中当前遇到的最小值,作为三元组的第一个候选元素;
  2. 定义变量second:记录在大于 first的前提下,当前遇到的最小值,作为三元组的第二个候选元素;
  3. 遍历数组中的每一个元素,依次进行判断:
    • 若当前元素小于等于first,更新first为当前元素(替换更小的首候选值,为后续寻找递增元素创造更多可能);
    • 若当前元素大于first且小于等于second,更新second为当前元素(替换更小的次候选值,降低找到第三个递增元素的门槛);
    • 若当前元素大于second,说明已找到满足nums[i]<nums[j]<nums[k]的三元组,直接返回true
  4. 若完整遍历数组后仍未找到符合条件的元素,返回false

边界处理

数组长度小于3时,无法构成三元子序列,可直接返回false,无需执行后续逻辑。

代码实现

本题采用 C++ 语言实现,代码中添加了详细注释,兼顾可读性与执行效率:

usingnamespacestd;classSolution{public:boolincreasingTriplet(vector<int>&nums){intlen=nums.size();// 边界条件:数组长度不足3,直接返回falseif(len<3){returnfalse;}// 初始化两个候选值为整数最大值,保证首次遍历能正常更新intfirst=INT_MAX;intsecond=INT_MAX;for(intnum:nums){if(num<=first){// 更新最小的第一个候选元素first=num;}elseif(num<=second){// 更新比first大的最小第二个候选元素second=num;}else{// 找到大于second的元素,满足递增三元子序列条件returntrue;}}// 遍历完成未找到符合条件的三元组returnfalse;}};

复杂度分析

时间复杂度

算法仅对数组执行一次线性遍历,遍历过程中所有判断与赋值操作均为常数级时间复杂度,因此总时间复杂度为O(n)O(n)O(n),其中nnn为数组nums的长度。

空间复杂度

算法仅使用了lenfirstsecond三个常数级变量,未开辟与输入规模相关的额外存储空间,因此空间复杂度为O(1)O(1)O(1)


总结

  1. 本题利用贪心算法的局部最优特性,仅通过两个变量即可完成状态维护,在时间和空间复杂度上均达到最优;
  2. 解题核心是持续缩小候选值的阈值,用更小的候选值提升后续匹配成功率,同时利用存在性判断的特性提前终止遍历;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 1:28:52

Agent Skills分析报告:AI能力的模块化革命

福利&#xff1a;关注我&#xff0c;评论区留言即可领取cloudbase 6个月免费兑换码&#xff01;! 目录 序幕&#xff1a;AI能力的模块化革命 解剖&#xff1a;Agent Skills的定义、分类与三层架构 四层功能分类体系 基础交互技能&#xff1a;Agent的“沟通桥梁” 决策规划…

作者头像 李华
网站建设 2026/3/30 5:59:23

开题报告“救星”降临!书匠策AI如何让学术小白秒变开题达人?

对于每一位踏上学术征程的研究者来说&#xff0c;开题报告就像是一场“学术首秀”——它不仅决定了研究方向是否站得住脚&#xff0c;更直接关系到后续研究的顺利开展。然而&#xff0c;选题撞车、文献堆砌、框架混乱、格式错误……这些开题路上的“绊脚石”&#xff0c;常常让…

作者头像 李华
网站建设 2026/3/25 11:42:43

基于大数据爬虫+智能AI大模型的母婴商品推荐系统开题报告

基于大数据爬虫智能AI大模型的母婴商品推荐系统开题报告 一、选题背景与意义 1.1 选题背景 在数字经济高速迭代与人工智能技术全面普及的当下&#xff0c;电子商务已成为居民日常消费的核心渠道&#xff0c;其中母婴商品市场凭借其刚性需求、高频消费、长尾品类的特性&#xff…

作者头像 李华
网站建设 2026/3/31 3:39:48

好写作AI:毕业论文求生指南?你的“副驾驶”已上线!

按下回车键&#xff0c;论文进度条终于动了“新建文档”四个字在屏幕上闪烁了半小时&#xff0c;光标像心跳一样规律地跳动&#xff0c;文档字数&#xff1a;0。这大概是每个毕业季学生最熟悉的恐怖片开场。别慌&#xff0c;现在剧本可以改写了。因为好写作AI的“论文副驾驶”模…

作者头像 李华
网站建设 2026/3/27 17:12:21

开题报告“救星”驾到!书匠策AI如何让你的研究赢在起点?

对于科研小白来说&#xff0c;开题报告就像一道高耸的学术门槛——选题撞车、文献堆砌、逻辑混乱、格式错误……这些问题像无形的绊脚石&#xff0c;让许多人还未出发就摔得头破血流。但别慌&#xff01;今天要介绍的科研神器——书匠策AI&#xff08;官网&#xff1a;www.shuj…

作者头像 李华