我想证明或反对一种算法的存在,该算法在给定整数数组下找到三个索引和,使得且(或发现没有这样的三元组)线性时间。
这不是一个作业问题。我在一个编程论坛上看到它是“尝试实现这种算法”。我怀疑经过各种实验后这是不可能的。我的直觉告诉我,但这并不算什么。
我想正式证明这一点。你怎么做呢?理想情况下,我希望逐步看到一个证明,然后,如果您愿意,可以对如何证明/证明这样的简单问题进行一些解释。如果有帮助,请举一些例子:
[1,5,2,0,3] → (1,2,3)
[5,6,1,2,3] → (1,2,3)
[1,5,2,3] → (1,2,3)
[5,6,1,2,7] → (1,2,7)
[5,6,1,2,7,8] → (1,2,7)
[1,2,999,3] → (1,2,999)
[999,1,2,3] → (1,2,3)
[11,12,8,9,5,6,3,4,1,2,3] → (1,2,3)
[1,5,2,0,-5,-2,-1] → (-5,-2,-1)
我以为有人可以遍历,并且每次有一个(即我们当前的)时,我们都会创建一个新的三元组并将其推入数组。我们继续步进并比较每个三元组,直到完成其中一个三元组。所以,这就像,!但是我认为这比仅仅更复杂,因为在最坏的情况下,我们的三元组数组中三元组的数量将对应于输入列表的大小。[1,5,2,0,-5,-2,-1] → 1..2.. -5.. -2.. -1
[1,5,2,0,-5,-2,3,-1] → 1..2.. -5.. -2.. 3