相关疑难解决方法(0)

给定两个数组a和b.找出所有元素对(a1,b1),使得a1属于数组A,b1属于数组B,其总和a1 + b1 = k

我正在寻找具有最小时间和空间复杂性的以下算法的解决方案.

给定两个数组a和b,找到所有元素对(a1,b1),使得a1属于数组A,b1属于数组B,其和a1 + b1 = k(任何整数).

我能够提出O(n log n)方法,我们将其中一个数组排序为A,对于数组B中的每个元素b,对排序数组A进行二进制搜索以获得值(Kb).

我们可以进一步改进吗?

algorithm set

17
推荐指数
2
解决办法
2万
查看次数

找到总和为k的数组中的两个元素

可能重复:
给定两个数组a和b.查找所有元素对(a1,b1),使得a1属于数组A,b1属于数组B,其总和a1 + b1 = k.

给定:未排序A的整数数组
输入:整数k

输出:所有两个元素集合,每个元素的总和等于kO(n).

例:

A = {3,4,5,1,4,2}

输入:6
输出:{3,3}, {5,1}, {4,2}

注意:我知道一个O(n logn)解决方案,但这需要对数组进行排序.有没有办法在O(n)中解决这个问题.可以使用非平凡的C++数据结构,即空间没有界限

c++ arrays algorithm

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

algorithm ×2

arrays ×1

c++ ×1

set ×1