【问题标题】:Finding pairs such that product is equal to the elemnts of third aaray in less than o(n^2)在小于 o(n^2) 的时间内找到对,使得乘积等于第三个数组的元素
【发布时间】:2017-05-18 19:06:16
【问题描述】:

给定三个排序数组 A、B 和 C。A 和 B 的取值范围为

【问题讨论】:

  • 为什么要担心 O(n^2)?你有 10^10 个 C 元素,所以你的环境可以处理它。鉴于 A 和 B 本身不超过 10^5,所有 A 和 B 对也只有 10^10。因此,这似乎并不比计算 C 值本身更难。
  • 数组 A、B 和 C 可以有 10^5 个元素,所以 o(n^2) 不会在 1 秒内运行
  • @Andrei 我认为是元素的值上升到 10^5 和 10^10,而不是元素的数量。元素的数量,至少在样本输入中是 4,3 和 3。担心 O(n^2) 的原因很简单,问题需要更快。您能否详细说明您在该基础上的陈述?
  • A 和 B 元素的取值范围 0
  • @Yunnosch,谢谢。我误读了这个问题。 Coder doit,在真正的问题中,您在每个数组中大约有多少个值?

标签: math sieve


【解决方案1】:

"Find all the pairs A and B"这句话是一个很好的指标,表明它不可能进入O(n^2)。例如,让我们选择: A = [2 2 2], B[2 2 2], C = [4 4 4],很容易看出我们有 n^2 对,总和为 4。

【讨论】:

  • 你改变了什么?我认为答案中所说的仍然有效。
  • 也许序列严格增加/减少?
  • 查找对将您限制在 o(n^2) 范围内(因为无论您需要打印所有对),但如果实施适当的算法,计算对可能会节省时间。例如: Arr:[1,2,3,4,5] 在上述排序后的数组中找出所有大于 2 的数 Ans:3,4,5 时间复杂度:o(n)......但是如果它被要求计算大于 2 的数字的个数,然后 Ans:3 时间复杂度:o(1)
  • 你能再解释一下吗?
猜你喜欢
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2013-02-03
  • 1970-01-01
  • 2021-12-01
  • 2021-12-27
  • 2015-03-19
相关资源
最近更新 更多