搜索多个排序数组及其复杂性

时间:2012-04-26 14:06:58

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

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

2 个答案:

答案 0 :(得分:4)

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

在循环前两个数组时,因为如果a被修复,b只会增加,c也只能增加。

因此,每次有Ca时,您都不必遍历b;只需循环C,而B循环即可。

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

答案 1 :(得分:2)

通过在a和b中迭代2个数组并在第三个数组中迭代搜索c,可以在O(N ^ 2 * logN)复杂度中完成。

另一种方法是O(N ^ 2),方法是将其中一个数组的元素插入哈希,迭代另外两个数组中的a和b,然后查看哈希中是否存在c =(a + b)