Increasing Triplet Subsequence

来源:互联网 发布:淘宝直通车开通条件 编辑:程序博客网 时间:2024/06/08 01:30

leetcode第334题,要求在一串无序的数组中是否存在一个递增的三元组。
其实这个题有点像寻找最长增长子序列,但是是一个简化版,因此可以不用DP。基本思路是,寻找当前最小值记作x1,次小值记作x2,如果遍历发现比这两个数大的,就一定存在递增三元组。
思考一下为什么这么做是对的。第一,本题只是问存不存在,并不需要找出所有的满足要求的子序列。第二,上述方法其实是最容易找到递增三元组的情况。
具体实现参见代码。

class Solution(object):    def increasingTriplet(self, nums):        """        :type nums: List[int]        :rtype: bool        """        if len(nums) < 3:            return False        minNum1 = 9999999999999        minNum2 = 9999999999999        for i in range(0, len(nums)):            if nums[i] <= minNum1:                minNum1 = nums[i]            elif nums[i] <= minNum2:                minNum2 = nums[i]            else:                return True        return False