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