【问题标题】:Searching in multiple sorted array and its complexity在多个排序数组中搜索及其复杂性
【发布时间】:2012-04-26 14:06:57
【问题描述】:

给定 3 个排序数组。从每个数组中找出 3 个元素,满足 a+b=c。可以做到小于 O(n^3) 的时间复杂度吗?请帮帮我。

【问题讨论】:

    标签: algorithm search sorting data-structures time-complexity


    【解决方案1】:

    调用三个数组ABC,以及元素abc

    在循环前两个数组的时候,因为如果a是固定的,b只能增加,c也只能增加。

    因此,您不必每次拥有一对ab 时都循环遍历C;只需循环通过C,同时循环通过B 即可。

    现在假设所有三个数组的长度都是O(N),时间复杂度是O(N^2),因为对于A中的每个值,你需要遍历所有B和所有@987654337 @,是 O(N) 的数字。

    【讨论】:

      【解决方案2】:

      通过遍历数组中的 2 个用于 a 和 b 并在第三个数组中对 c 进行二进制搜索,可以在 O(N^2 * logN) 复杂度内完成。

      另一种方法是 O(N^2),将其中一个数组的元素插入散列,在其他两个数组中迭代 a 和 b,并查看散列中是否存在 c = (a + b) .

      【讨论】:

      • 对于方法2,既然3个数组都已经排好序了,有没有什么有效的方法可以解决?
      • 你不能生成比 O(N^2) 更好的 (a,b) 对...在哈希中的搜索是 O(1)
      猜你喜欢
      • 1970-01-01
      • 2014-11-28
      • 2011-07-16
      • 2017-10-24
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多