ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递增的三元子序列

2021-03-02 21:32:15  阅读:172  来源: 互联网

标签:return nums 递增 two 三元组 range num 序列 三元


给你一个整数数组 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

标签:return,nums,递增,two,三元组,range,num,序列,三元
来源: https://www.cnblogs.com/youguang369/p/14471393.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有