arrays - 如何改进算法来检查数组中是否有一个元素等于数组中任何其他两个元素之间的差值?

标签 arrays algorithm loops sorting time-complexity

我知道这显然是一个简单的问题。但是我找不到更好的方法来提高效率。这就是我正在尝试的。这很天真,但我仍然无法正确理解。

  1. 对数组进行排序。 (分而治之)

  2. a) 一次选择一个元素 b) 遍历数组的所有剩余元素(成对)得到 它们之间的差异以匹配所选元素。

  3. 重复步骤 2,直到至少找到所有元素。
  4. 存储所有符合条件的元素。
  5. 打印存储的元素。

最佳答案

条件 A[i] - A[j] = A[k] 等于 A[i] = A[j] + A[k],所以我们可以求和。

对数组进行排序。

对于每个元素搜索,如果它是两个其他元素的总和,使用 two pointers approach (sum太小自增下标,sum过大自减上标)

由此产生的复杂度是二次的

关于arrays - 如何改进算法来检查数组中是否有一个元素等于数组中任何其他两个元素之间的差值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52360903/

相关文章:

javascript - 如何从js调用php方法?

c - 从数组中提取 UpperByte 和 LowerByte

c - 如何制作平衡二叉树

javascript - 为什么我不能将此变量重新分配给 node.js 中的新值?

java - 在java中访问while循环内的值?

java - 如何将随机整数添加到ArrayList而不重复

当顺序未知时迭代范围的 Pythonic 方式

java - 如何找到数组中出现次数最多的数字并打印出来

python - 设置 python 最坏情况复杂度

C++基于文本文件的数据库读取