algorithm - 找到具有特定总和的数字对
问题描述
考虑 2 个正整数数组。我们得到了一些预定义的整数常量N。现在,我们必须找到对,其中 1 个元素来自 1 个数组,2 - 来自第二个数组,使得整数之和等于N。如果没有找到这样的对,则返回总和最接近(但不超过)N的对(如果它们的总和相等,则可以是几对)
我有唯一的解决方案:遍历所有可能的对,如果我们遇到一对更近的距离,清理结果数组并将其放在那里。如果我们遇到精确距离的对,则清除距离较小的对并将该对放入结果数组中。
我相信有更有效的方法来解决这个问题,你对此有什么想法吗?
解决方案
所以我们有数组A
,B
我们想找出
a + b <= N where a belongs to A and b belongs to B
这样
(N - a - b) is minimum
我们可以做到以下
- 排序
B
数组:|B| * log('B')
时间复杂度 - 借助二分搜索,在数组
a
中A
找到最接近N - a
值 (b
) 的每个:时间复杂度B
|A| * log(|B|)
- 跟踪最佳(最少)
a
和b
配对
总时间复杂度
|B| * log('B') + |A| * log(|B|) = (|A| + |B|) * log(|B|)
如果|B| > |A|
我们可以对数组进行排序A
和扫描B
并且具有(|A| + |B|) * log(|A|)
时间复杂度
如果|A| ~ |B| ~ M
我们有M * log(M)
时间复杂度
推荐阅读
- magento-1.9 - Magento 1.9 将自定义列添加到关联产品网格
- python - 无法加载原生 TensorFlow 运行时。Windows 10 上的 Python 3.6
- tableau-api - 在 Tableau 中计算平均值(有条件)
- ios - 在向单元格提供外部数据时滚动表格视图时出现问题
- java - 从android上的动态字符串中提取地图url
- python - 在 main 的 Label 中写一个类变量
- reactjs - React-Native KeyCloak - 找不到变量:文档
- unit-testing - 如何在每个测试中以不同方式模拟克隆的导入依赖项
- python - 从另一个字典制作子集字典
- sql - 访问查询:使用 SET 中的 DSum 更新