题目如下:
https://leetcode-cn.com/problems/increasing-triplet-subsequence/
题目解析:
这道题可以利用最长上升子序列的解法进行解答,但是这道题目可以优化,因为只需要达到三个上升序列即可,所以我们可以设置为定长。
首先令K来储存我们的最长元素的最小的那一个,例如K[n]表示长度为n的上升序列中最后一个元素中的最小值,但是这里我们n只需要为2即可,因为如果有元素大于k[2],说明就有递增的三元序列。
代码如下
class Solution:
def increasingTriplet(self, nums: List[int]) -> bool:
n = len(nums)
idx = [inf]*3
for i in range(n):
x = nums[i]
if x > idx[2]:
return True
if idx[1] < x < idx[2]:
idx[2] = x
if idx[1] > x:
idx[1] = x
return False