递增的三元子序列

编程入门 行业动态 更新时间:2024-10-10 19:20:33

递增的三<a href=https://www.elefans.com/category/jswz/34/1279668.html style=元子序列"/>

递增的三元子序列

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

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

示例 1:

输入:nums = [1,2,3,4,5]
输出:true
解释:任何 i < j < k 的三元组都满足题意

示例 2:

输入:nums = [5,4,3,2,1]
输出:false
解释:不存在满足题意的三元组

示例 3:

输入:nums = [2,1,5,0,4,6]
输出:true
解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6

代码:

class Solution:

    def increasingTriplet(self, nums: List[int]) -> bool:

        small = mid = inf

        for num in nums:

            if num <= small:

                small = num

            elif num <= mid:

                mid = num

            else:

                return True

        return False

思路解析:

在求解LIS(最长上升子序列时,我们常用单调栈维护+二分查找实现)。 本题只需要找到任意一个长度等于3的上升子序列,故可以用两个变量模拟前两个栈内元素, 判断当前数字在跟这两个元素的大小关系,如果小于第一个,则替换第一个,然后如果小于第二个,则替换第二个,否则我们已经找到了满足答案的三个数。

更多推荐

递增的三元子序列

本文发布于:2023-12-04 09:23:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1660466.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:元子   序列

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!