c++ - 如何在 C++ 中使用 Hashmap 查找任意随机数组中总和为特定值的所有对

标签 c++ arrays hashmap sum

我想使用 Hashmap 找到数组中总和为某个数字 X 的所有对。我知 Prop 有 O(n^2) 复杂度的基本解决方案,但我在某处读到 hashmap 可以提供 O(n)解决方案。我不知道如何使用 hashmap 来实现解决方案。有人可以为我提供有关如何执行此操作的伪代码吗?

最佳答案

如果您要使用类似 std::set 的东西,那么集合中的所有值都将是唯一的。这将允许您遍历集合并从所需值中减去以确定您需要的其他值。然后您可以测试该值是否存在于集合中。操作看起来像这样:

  1. 将迭代器设置为集合中的第一个元素
  2. 获取集合中第一个元素的值
  3. 用期望值减去值得到需要的值
  4. 测试集合以查看所需的值是否在集合中
  5. 如果是记录两个值
  6. 增加迭代器并从#2 开始重复,直到到达集合的末尾

关于c++ - 如何在 C++ 中使用 Hashmap 查找任意随机数组中总和为特定值的所有对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713129/

相关文章:

c++ - 如果调用未覆盖的虚方法,如何强制编译器错误?

java - 数组的长度属性在哪里定义?

android - 一次可以调用多少hashMap操作 'safe'

java - 如何将字符串转换为 HashMap?

c++ - 我可以使用 Visual Studio 以外的 IDE 来开发 Windows GPIO 驱动程序吗?

c++ - 为什么要为 "copy on write"的 const 成员函数返回一个代理类?

java - Java 中的 toArray 与 stream.toArray 有什么性能差异吗

java - 为什么我应该在以下场景中重写 equals 和 hashcode 方法

c++ - 我应该始终使用 `T&&` 而不是 `const T&` 或 `T&` 来绑定(bind)到回调函数吗?

javascript - 无法访问获取的数组元素