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

python-leetcode-递增的三元子序列

334. 递增的三元子序列 - 力扣(LeetCode)

使用 贪心算法 解决这个问题,只需要维护两个最小值 firstsecond,如果找到了比 second 还大的数,就说明存在递增的三元组。

代码实现

def increasingTriplet(nums):
    first = second = float('inf')

    for num in nums:
        if num <= first:  
            first = num  # 更新最小值
        elif num <= second:  
            second = num  # 更新次小值
        else:  
            return True  # 找到了 third 使得 first < second < third

    return False

# 测试示例
print(increasingTriplet([1, 2, 3, 4, 5]))  # 输出: True
print(increasingTriplet([5, 4, 3, 2, 1]))  # 输出: False
print(increasingTriplet([2, 1, 5, 0, 4, 6]))  # 输出: True

思路解析

  1. 初始化 firstsecond 为正无穷大,表示目前找到的最小和次小元素。
  2. 遍历数组
    • num <= first,更新 first,表示找到了更小的数。
    • num <= second,更新 second,表示找到了更小的次小数。
    • num > second,说明已经找到了 third,满足 first < second < third,返回 True
  3. 如果遍历结束还没返回 True,则返回 False

时间 & 空间复杂度

  • 时间复杂度:O(n)(遍历一次数组)
  • 空间复杂度:O(1)(只用了两个额外变量)

这种方法高效且不需要额外的存储空间,是最优解!

相关文章:

  • 详细介绍 Jupyter nbconvert 工具及其用法:如何将 Notebook 转换为 Python 脚本
  • 数据库系统概论(三)数据库系统的三级模式结构
  • 软考 中级软件设计师 考点知识点笔记总结 day03
  • Blender UV纹理贴图,导出FBX到Unity
  • SqlSugar 进阶之原生Sql操作与存储过程写法 【ORM框架】
  • centos安装python3.9.9总结和笔记
  • coze ai assistant Task 1
  • Java中的常用关键字
  • 基于SpringBoot的校园二手交易平台(计算机毕设-JAVA)
  • Oracle/MySQL/PostgreSQL 到信创数据库数据同步简介
  • uniapp在APP平台(Android/iOS)选择非媒体文件
  • 参考thinkphp架构的FastAPI实现思路
  • 【AI大模型】LLM训练deepseek如何识别视频
  • 基于腾讯云高性能HAI-CPU的跨境电商客服助手全链路解析
  • leetcode-数组操作
  • LeetCode - #226 基于 Swift 实现基本计算器
  • 浙江大学:《DeepSeek——回望AI三大主义与加强通识教育》
  • 【每日学点HarmonyOS Next知识】对话框与导航冲突、富文本、字体大小、列表刷新、Scroll包裹文本
  • ROWNUM 与 ROW_NUMBER() OVER ()
  • llamafactory 微调教程
  • 紫光集团原董事长赵伟国一审被判死缓
  • 京东美团饿了么等外卖平台被约谈
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额5万元
  • 专访|韩国世宗研究所中国研究中心主任:李在明若上台将推行均衡外交
  • 海北州委常委、常务副州长桑本履新青海省供销社理事会主任
  • 通辽警方侦破一起积压21年的命案:嫌疑人企图强奸遭反抗后杀人