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