增加三元组子序列:LeetCode 接受的答案存在问题

问题描述 投票:0回答:1

我正在寻找一些基于 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

python-3.x
1个回答
0
投票

在此解决方案中,i 是迄今为止找到的最小元素,j 是迄今为止出现在其前面的较小元素的最小元素。 i、j 和 num 不是三元组中的值,尽管 j 和 num 是。

© www.soinside.com 2019 - 2024. All rights reserved.