记录扫描过的最小值与第二小的值。初始值都为Integer.MAX_VALUE。
- 如果当前数字比最小值还小,我们就更新最小值。
- 如果当前数字大于最小值并且小于第二小的值,我们就更新第二小的值。
- 如果当前数字大于第二小的值,说明找到了递增的三元子序列,直接返回true。
关键理解:最小值先于第二小值赋值,如果第二小的值被赋值了,那么最小的值肯定存在!!!
class Solution:
def increasingTriplet(self, nums: List[int]) -> bool:
L = len(nums)
if L < 3:
return False
min1 = mid1 = min2 = nums[0]
for i in range(1,L):
if nums[i] <= min1:
if mid1> min1:
if nums[i] < min2:
min2 = nums[i]
elif nums[i] > min2:
min1 = min2
mid1= nums[i]
else:
min1 = mid1 = nums[i]
else:
if mid1 > min1 and nums[i] > mid1:
return True
mid1 = nums[i]
if min2 < min1:
min1 = min2
return False
本文解析了一种用于检测数组中是否存在递增三元子序列的算法,通过维护最小值和第二小值,判断每个数的位置关系。核心在于更新这两个值并检查条件以确定子序列的存在。

3646

被折叠的 条评论
为什么被折叠?



