边工作边刷题: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