边工作边刷题:70天一遍leetcode: day 47

Increasing Triplet Subsequence

要点:

  • 第一遍没想出来,想到了要记录min (m1) 和min pair (m2),其实就差一步。这题tricky的地方是m1和m2是各自独立的两个状态:m2差一步就进化到triplet,而m1还差两步。可能m2对应当前m1进化的,也有可能m2是上一个m1。所以m1有可能在m2的右边。
  • 所以这题的做法就是不断更新m1和m2(先和m1比较,再比较m2),直到某个值>m2

错误点:

  • 更新m1,m2要<=,因为至于num最终>才是valid结果
class Solution(object):
    def increasingTriplet(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        m1 = sys.maxint
        m2 = sys.maxint
        for i in xrange(len(nums)):
            if nums[i]<=m1: # error 1: <= instead of <
                m1 = nums[i]
            elif nums[i]<=m2: # error 2: <= instead of <
                m2 = nums[i]
            else:
                return True
        return False
原文地址:https://www.cnblogs.com/absolute/p/5690309.html