首页 > 其他 > 详细

递增的三元子序列

时间:2021-03-02 22:27:13      阅读:37      评论:0      收藏:0      [点我收藏+]

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

def increasingTriplet1(nums):
    """
    遍历法,for循环和while循环,for循环对边界条件考虑较少。
    """
    n = len(nums)
    if n < 3:
        return False
    
    for i in range(n):
        for j in range(i, n):
            if nums[j] > nums[i]:
                for k in range(j, n):
                    if nums[k] > nums[j]:
                        return True
    return False


def increasingTriplet2(nums):
    """
    双指针法,两个指针分别记录递增的三元组中的第一个元素和第二个元素。判断新的元素是否大于第二个元素。
    two附带隐含信息——这之前有个数比two小
    """
    one = float(‘inf‘)
    two = float(‘inf‘)
    for num in nums:
        if num <= one:
            one = num # 更新第一个元素,扩大了后面第二个元素取值的范围
        elif num > one and num <= two:
            two = num # 更新第二个元素,扩大了后面第三个元素取值的范围
        else:
            return True
    return False

递增的三元子序列

原文:https://www.cnblogs.com/youguang369/p/14471393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!