arrays - 是否有可能在 O(n) 时间内找到给定数组中的所有三元组?

标签 arrays algorithm find triplet

给定一个数字数组,找出所有满足给定条件的三元组。

条件:a[i] < a[j] < a[k]其中 I < j < k .

有没有可能在O(n)时间内解决这个问题?

这不是家庭作业!!!

最佳答案

输出的大小(最坏情况)是复杂性的下限。

因为可能有 O(n^3) 个这样的三元组,所以复杂度不可能是 O(n)。

例如,如果数组从低到高排序,您将有 n 个选择 3 个这样的三元组,其顺序为 n^3。

如果问题涉及找到三胞胎的数量,这是我看到的最有效的解决方案:

https://cs.stackexchange.com/questions/7409/count-unique-increasing-subsequences-of-length-3-in-on-log-n

关于arrays - 是否有可能在 O(n) 时间内找到给定数组中的所有三元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532143/

相关文章:

Python - 在矩阵中制作相同值的链表

linux - 在同一个文件夹树上多次调用 find

MongoDB:检查嵌套键值对是否存在

linux - 优化一行 find + exec 命令

algorithm - 插入 2-3-4 树节点数

javascript - 一次合并两个 Javascript 数组三个元素

c - 使用 scanf 传递未知数量的整数

java - 如何在 Java 中初始化对象数组

php - MySQL根据数组修改where语句

PHP、MYSQL 组合来自 mysqli_fetch_array 的数组