news 2026/9/3 3:03:23

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

作者头像

张小明

前端开发工程师

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/9/2 22:44:08

单声道到立体声:AI 如何为音乐注入新生命

原文&#xff1a;towardsdatascience.com/mono-to-stereo-how-ai-is-breathing-new-life-into-music-4180f1357db4?sourcecollection_archive---------4-----------------------#2024-12-24 AI 单声道到立体声升混的应用与技术 https://medium.com/maxhilsdorf?sourcepost_p…

作者头像 李华
网站建设 2026/9/3 1:14:24

Qwen3-VL-Reranker-8B应用场景:医疗影像报告图文混合语义检索系统

Qwen3-VL-Reranker-8B应用场景&#xff1a;医疗影像报告图文混合语义检索系统 1. 这不是普通“搜图”&#xff0c;而是让医生秒懂影像与报告的关联 你有没有遇到过这样的场景&#xff1a;一位放射科医生在查阅某位肺癌患者的CT影像时&#xff0c;想快速找到过去三年内所有相似…

作者头像 李华
网站建设 2026/9/2 22:33:38

信通院:人工智能产业发展研究报告(2025年) 2026

《人工智能产业发展研究报告&#xff08;2025 年&#xff09;》核心是 2025 年全球 AI 从 “有能力” 向 “有用处” 跨越&#xff0c;技术、应用、生态协同发展&#xff0c;我国产业规模与企业数量稳步增长&#xff0c;同时面临安全治理与国际合作等多方面机遇与挑战。一、技术…

作者头像 李华
网站建设 2026/9/2 22:33:11

测试人如何高效地设计自动化测试框架?

关于测试框架的好处&#xff0c;比如快速回归提高测试效率&#xff0c;提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容&#xff0c;以及如何去设计一个测试框架。 什么是自动化测试框架&#xff1f; 它是由一个或多个自动化测试基础模块、自动化测试管…

作者头像 李华
网站建设 2026/9/2 23:29:12

题目1434:蓝桥杯历届试题-回文数字

#include<iostream> using namespace std; //计算各位之和 int totalSum(int x){ int sum0; while(x>0){ sumx%10; x/10; } return sum; } //判断是否为回文数 bool isPolindromt(int x){ int orignalx,reversed0; while(x&…

作者头像 李华