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

【每天学习一点算法 2026/03/03】递增的三元子序列

每天学习一点算法 2026/03/03

题目:递增的三元子序列

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。

如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

作者:LeetCode
链接:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xvvuqg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. 我们可以遍历数组查看左边变是否有小于自己的数以及右边是否有大于自己的数。

    functionincreasingTriplet(nums:number[]):boolean{for(leti=1;i<nums.length-1;i++){if(findLeft(i)&&findRight(i))returntrue}returnfalsefunctionfindLeft(index:number):boolean{returnMath.min(...nums.slice(0,index+1))<nums[index]}functionfindRight(index:number):boolean{returnMath.max(...nums.slice(index))>nums[index]}};

    这个方法很容易想到,但是遇到较长的测试用例就会超时。

    我们换一个思路,我们先维护两个数组leftMinrightMax分别记录nums每个下标左侧范围最小数和右侧范围内最大的数,这样我们左右查找的循环操作只用做一次,后续遍历数组比较元素两侧最小值即可。

    functionincreasingTriplet(nums:number[]):boolean{constn=nums.length;if(n<3){returnfalse;}constleftMin=newArray(n).fill(0);leftMin[0]=nums[0]for(leti=1;i<n;i++){leftMin[i]=Math.min(nums[i],leftMin[i-1])}constrightMax=newArray(n).fill(0);rightMax[n-1]=nums[n-1]for(leti=n-2;i>=0;i--){rightMax[i]=Math.max(nums[i],rightMax[i+1])}for(leti=1;i<n-1;i++){if(nums[i]>leftMin[i-1]&&nums[i]<rightMax[i+1])returntrue}returnfalse};
  2. 贪心算法

    我们可以维护两个变量firstsecond表示三元序列的第一个数和第二个数,遍历过程我们使firstsecond始终保持最小,这样就可以找出三元序列了。

    设定firstsecond初始值:

    first = nums[0]

    second = Infinity

    我们在遍历的过程中会遇到三种情况:

    • first < nums[i] < second时,需要替换secondnums[i]
    • nums[i] < first时,需要替换firstnums[i]
    • nums[i] > second时,我们就找到了第三个数。
    functionincreasingTriplet(nums:number[]):boolean{constn=nums.length;if(n<3){returnfalse;}letfirst=nums[0]letsecond=Infinityfor(leti=1;i<n;i++){if(nums[i]>second){returntrue}elseif(nums[i]>first){second=nums[i]}else{first=nums[i]}}returnfalse};

题目来源:力扣(LeetCode)

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

相关文章:

  • 谭蔚泓院士高分文章汇总(2025-2026)
  • (开源项目)当我用Codex修复本科做的双创项目...研梦:基于Django+Vue的考研信息化平台(论坛发帖、新闻资讯、爬虫趋势)
  • 今年准备看AI方向的机会?这份《大模型与Agent面试宝典》建议收藏
  • 选择WMS仓储管理系统供应商时,需要考察哪些关键因素?
  • vue3中台框架解析
  • 2026年度无管道单向流新风系统品牌TOP10榜单:技术创新与场景适配性双维度评选 - 野榜精选
  • 2026年河北滚齿机厂家实力榜:六轴数控滚齿机、四轴数控滚齿机、五轴数控滚齿机、大型数控滚齿机、卧式滚齿机、大模数滚齿机、五家企业凭技术与口碑出圈 - 海棠依旧大
  • 智能体技能构建手册:让AI真正“动手“的模块化艺术
  • 初创企业如何构思创意域名
  • 没有哲学社会科学预印本平台,也没关系
  • Lumina-mGPT多模态模型解析(持续更新)[特殊字符][特殊字符]
  • 创客匠人的用户旅程重构:AI智能体如何编织知识变现的隐形价值链
  • Mask2Former图像分割ADE20k训练 Swin-Tiny模型详解 [特殊字符]
  • 创客匠人的无界知识:AI智能体如何破译跨文化知识变现的密码
  • 建议收藏|大模型转行入门全攻略:后端/小白/转行者必看,少走90%弯路
  • MaskFormer 图像分割神器!!!!!!
  • 金三银四Java面试题(总结最全面的面试题)
  • 收藏 | 从个人助理到团队协作:小白/程序员必学大模型Multi-Agent实战(附LangGraph框架)
  • MiDaS深度估计算法与Unity Sentis实现 [特殊字符]
  • 大模型应用的未来:Langgraph智能体开发入门与收藏指南
  • 2026年河北数控滚齿机标杆厂家最新推荐:大模数滚齿机、螺旋内齿滚齿机、YK3180滚齿机、YK3180数控滚齿机、卓昊机械齿轮加工设备品质新标杆 - 海棠依旧大
  • 2026药学主任药师考试靠谱机构推荐,附备考干货 - 医考机构品牌测评专家
  • 5分钟Mac本地跑通32B Qwen!免费GPT-4o替代,还能5分钟造个会开浏览器+执行Shell的AI Agent
  • Oracle:无效的数据
  • 闲置的步步高超市卡怎么回收呢?速看攻略 - 京顺回收
  • MeloTTS-ONNX中英混合模型(支持CPU快速推理)
  • 2026药学主任药师考试机构推荐,上岸考生亲测靠谱分享 - 医考机构品牌测评专家
  • AI短剧狂飙,谁先失业
  • Jmeter接口自动化测试
  • 从零开始构建AI智能体:Python实现指南,小白也能学会并收藏!