给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/increasing-triplet-subsequence
例:
输入:nums = [1,2,3,4,5] 输出:true 解释:任何 i < j < k 的三元组都满足题意
解析:
遍历数组,只需找出最小值和第二大的值,然后不断更新最小值和最大值,只要在遍历的过程中有大于max的值一定存在一个递增的三元子序列。(只要更新一次max就代表有一组递增的2元子序列,所以只要大于max就行)
class Solution(object):
def increasingTriplet(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
n = len(nums)
if n < 3: # 长度判断
return False
min = float('inf') # 初始化最小值
max = float('inf') # 初始化第二大的值
for item in nums: # 遍历列表
if item < min: # 找出最小值
min = item
elif min < item and item < max: # 找出第二大的值
max = item
elif max < item: # 存在第三大的值
return True
return False