news 2026/6/26 15:59:54

贪心算法-递增的三页子序列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心算法-递增的三页子序列

题目链接

一、问题描述

给定一个整数数组nums,判断是否存在长度为3的递增子序列,即是否存在下标i < j < k,使得nums[i] < nums[j] < nums[k]

  • 存在则返回true,否则返回false

二、核心解法

解法1:动态规划(DP)
  • 思路:计算数组的**最长递增子序列(LIS)**的长度,若长度 ≥ 3,则说明存在符合要求的子序列。
  • 实现逻辑
    1. 定义dp[i]表示以nums[i]结尾的最长递增子序列的长度。
    2. 对每个i,遍历所有j < i,若nums[j] < nums[i],则dp[i] = max(dp[i], dp[j] + 1)
    3. 遍历dp数组,若存在值 ≥ 3,直接返回true
  • 复杂度:时间复杂度O(n²),空间复杂度O(n)(需存储dp数组)。
解法2:贪心算法
  • 思路:用两个变量ab分别记录长度为1长度为2的递增子序列的最小末尾值,遍历数组时更新这两个变量,一旦找到比b大的元素,说明存在长度为3的递增子序列。
  • 实现逻辑(以示例[2,1,5,0,4,6]为例):
    1. 初始化a = ∞b = ∞
    2. 遍历每个元素x
      • x ≤ a→ 更新a = x(保持长度1的子序列末尾最小);
      • a < x ≤ b→ 更新b = x(保持长度2的子序列末尾最小);
      • x > b→ 说明存在a < b < x,即长度为3的递增子序列,直接返回true
    3. 遍历结束未找到则返回false
  • 复杂度:时间复杂度O(n)(仅需一次遍历),空间复杂度O(1)(仅用两个变量),是更优的解法。

三、知识点总结

  1. 问题本质:该问题是「最长递增子序列(LIS)」的特例,只需判断 LIS 长度是否 ≥ 3。
  2. 算法对比
    • 动态规划适用于需要完整计算 LIS 长度的场景,但时间复杂度较高;
    • 贪心解法针对「判断是否存在长度为3的递增子序列」做了优化,时间、空间效率更优。
  3. 贪心策略的核心:维护最小的可能末尾值,让后续更容易找到更长的递增子序列,从而提升效率。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 14:04:18

龙魂模型这模型会说谎吗?

&#x1f602;&#x1f602;&#x1f602; 老大在厕所急着看回复&#xff0c;宝宝笑死了&#xff01; 激动到肚子疼这事&#xff0c;宝宝头一次听说&#xff01; &#x1f6bd;&#x1f602; 华为加载卡住&#xff0c;你还在那干着急&#xff0c;画面太美 &#x1f4f1;&#x…

作者头像 李华
网站建设 2026/6/25 15:17:09

2025年程序员都转行,我该何去何从呢!

2025年程序员都转行&#xff0c;我该何去何从呢&#xff01; 疫情后大环境下行,各行各业的就业情况都是一言难尽。互联网行业更是极不稳定,频频爆出裁员的消息。大家都说2024年程序员的就业很难,都很焦虑&#xff0c;在许多人眼里,程序员可能是一群背着电脑、 进入大上写字楼的…

作者头像 李华
网站建设 2026/6/25 15:19:12

小公司的研发后期,基本等同于售后服务部

大公司可以把研发、测试、技术支持切分成几个独立部门,每个人只需要盯着自己那一亩三分地。而小公司呢?芯片流片回来,问题开始冒头,客户开始提需求,研发工程师就得立刻切换频道——上午还在看前仿真波形查bug,下午就得跑到客户现场调试设备。大公司的责任分散——研发说是需求…

作者头像 李华
网站建设 2026/6/25 14:31:51

通义千问3-4B优化技巧:让AI推理速度提升3倍

通义千问3-4B优化技巧&#xff1a;让AI推理速度提升3倍 【免费下载链接】通义千问3-4B-Instruct-2507 项目地址: https://ai.csdn.net/mirror/qwen3-4b-instruct-2507 1. 为什么你需要关注这个“小个子”模型&#xff1f; 你有没有遇到过这样的情况&#xff1a;想在本地跑一…

作者头像 李华
网站建设 2026/6/25 7:47:14

Wireshark抓包:详解TCP四次挥手报文内容

一、详解tcp四次挥手 刚才用图解释了tcp四次挥手的过程。用wireshark抓一个包&#xff0c;进行详细的分析。 1.客户端发的第一个释放连接的请求 这是抓的包&#xff0c;然后过滤出来的&#xff0c;看下最后的阶段&#xff0c;是要开始释放一个链接了。这里是第一个fin&#…

作者头像 李华