我正在寻找一些基于 O(n) 复杂度的解决方案来解决这个问题。很多人用下面的方法解决了这个问题,并被 LeetCode 接受:
class Solution:
def increasingTriplet(self, nums: List[int]) -> bool:
if len(nums) < 3:
return False
i = float('inf')
j = float('inf')
for num in nums:
if num <= i:
i = num
elif num <= j:
j = num
else:
return True
return False
我想知道为什么这是正确的解决方案?这种方法不关心增加元素的增加索引。前提条件是三元组索引 (i,j,k) 必须是 i
我们用一个测试用例来测试一下:
nums = [3, 8, 1, 5, 2, 0, 10, 12]
对于三元组 0、2、10,其中 i=5、j=4 和 k=6,输出 TRUE。 如果我在问题中遗漏了一些基本内容,有人可以帮助我吗?
感谢您的帮助。
对于这个测试用例,根据我的理解,有9个三元组。第一个是:i=0,j=1,k=6,对应的三元组是:3,8,10
在此解决方案中,i 是迄今为止找到的最小元素,j 是迄今为止出现在其前面的较小元素的最小元素。 i、j 和 num 不是三元组中的值,尽管 j 和 num 是。