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

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

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

代码实现

python 复制代码
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)(只用了两个额外变量)

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

相关推荐
弈宸3 天前
Transformer与ViT
算法·架构
知其然亦知其所以然4 天前
国产大模型也能无缝接入!Spring AI + 智谱 AI 实战指南
java·后端·算法
然我4 天前
搞定异步任务依赖:Promise.all 与拓扑排序的妙用
前端·javascript·算法
徐小夕4 天前
支持1000+用户同时在线的AI多人协同文档JitWord,深度剖析
前端·vue.js·算法
沐怡旸5 天前
【算法】【链表】328.奇偶链表--通俗讲解
算法·面试
掘金安东尼5 天前
Amazon Lambda + API Gateway 实战,无服务器架构入门
算法·架构
码流之上5 天前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
快手技术5 天前
快手提出端到端生成式搜索框架 OneSearch,让搜索“一步到位”!
算法
CoovallyAIHub6 天前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP6 天前
Serverless 架构下的大模型框架落地实践
算法·架构