找到总和为 K 的三个元素

2024-04-25

我编写了以下代码来查找总和为 K 的两个元素

#include <iostream>
#include <unordered_map>

void sum_equal_to_k(int *a, int n, int k) { /* O(N) */
    std::unordered_map<int, int> hash;

    // insert all elements in a hash
    for (int i = 0; i < n; i++) {
        hash[a[i]] = 1;
    }

    // print if k - a[i] exists in the hash
    for (int i = 0; i < n; i++) {
        if (hash[k - a[i]] == 1) {
            printf("%d %d\n", a[i], k - a[i]);
        }
    }
}
int main() {
    int a[8] = {3, 5, 2, 1, 6, 7, 4};
    sum_equal_to_k(a, 8, 7);
    return 0;
}

我无法将其扩展为三元素和


该问题被称为3SUM。有一个O(n^2)您可以找到解决该问题的算法here http://en.wikipedia.org/wiki/3SUM#Quadratic_algorithm,这不需要任何哈希。

如果你只使用它会更简单vector(您已经在使用unordered_map无论如何,对吧?):

void sum3_k(std::vector<int> s, int k) {
    std::sort(s.begin(), s.end());

    for (size_t i = 0; i < s.size() - 2; ++i) {
        size_t start = i + 1;
        size_t end = s.size() - 1;

        while (start < end) {
            int sum = s[i] + s[start] + s[end];
            if (sum == k) {
                std::cout << s[i] << " " << s[start] << " " << s[end] << std::endl;
                ++start, --end;
            }
            else if (sum > k) {
                --end;
            }
            else {
                ++start;
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找到总和为 K 的三个元素 的相关文章

  • fopen_s 怎么会比 fopen 更安全呢?

    我正在处理遗留代码Windows平台 当我编译代码时VS2013 它给出以下警告 错误 C4996 fopen 该函数或变量可能不安全 考虑使用fopen s反而 要禁用弃用 请使用 CRT SECURE NO WARNINGS 详情请参见
  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • .crt 部分?这个警告是什么意思?

    我最近收到此警告 VC 2010 warning LNK4210 CRT section exists there may be unhandled static initializers or terminators 我假设这是关键部分
  • NDK 应用 onDestroy 清理 - 如何 DetachCurrentThread

    因此 如果我们连接 我们必须在完成后分离线程 对吗 JNIEnv get jni env JNIEnv res JAVA VM gt GetEnv void res JNI VERSION 1 6 Using cached JavaVM J
  • 将公历日期转换为儒略日期,然后再转换回来(随着时间)

    我正在编写一个程序 必须将当前的公历日期和时间转换为儒略日期 然后再转换回公历门 最终我需要添加能够添加年 月 日 小时 分钟和秒的功能 但我需要先解决这部分问题 现在我已经从公历日期转换为儒略日期 所以从逻辑上讲 我觉得我应该能够以某种方
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • 圆半便士? [复制]

    这个问题在这里已经有答案了 可能的重复 向上舍入最接近的 0 10 https stackoverflow com questions 2206335 round up nearest 0 10 JavaScript 中的数字四舍五入到小数
  • Robolectric 和 Powermock 之间的类加载冲突

    我正在尝试编写一个需要两者的测试机器人电动2 2 和电源模拟 因为被测试的代码依赖于一些 Android 库和第三方库以及我需要模拟的最终类 鉴于我被迫通过以下方式使用 Robolectric 测试运行程序 RunWith Robolect
  • parApply 中的错误处理(在 R 中,使用并行包)

    我正在尝试解决尝试使用时收到的以下消息parApply函数从parallel包裹 Error in unserialize node con error reading from connection 以下是我正在做的事情的模型 c0 lt
  • 使用 Java API 从 Lotus Notes NSF 文件中提取电子邮件

    我想使用 Java API Notes jar 并且正在运行安装了 Lotus Notes 8 5 的 Windows 机器 我对 Lotus Notes 一无所知 我只需要完成一项狭窄的任务 从 NSF 文件中提取电子邮件 我希望能够遍历
  • 使用 Python 将方程渲染为 .png 文件

    我想将方程渲染为 PNG 文件并将它们嵌入到我的库的 HTML 文档中 我已经在其他项目中使用 pylab matplotlib 我还没有找到任何线索http matplotlib sourceforge net users usetex
  • 不懂 C 就开始学习 C#? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否建议只了解一点点 C 只是一些基础知识 或什至不了解 C 就直接跳到 C C 和 C 非常不同 它们共享语法 但编程风格却截然不同 学习 C
  • 我可以使用反射在类中添加新字段吗

    如果我有类文字对象 我可以向类添加新字段吗 如何确定该类文字中引用或使用了特定的类 您不能直接向其中添加新字段Class目的 您可以使用第三方 API 来生成或修改类 例如 ASM BCEL 但最好避免使用它们 因为它们会增加很多复杂性 至
  • WebRTC:强制对等点使用 TURN 服务器

    我有一个 webrtc 应用程序 它工作正常 但出于测试目的 我需要测试我的 TURN 服务器是否工作 但因为两个测试设备都在同一网络内 所以我无法测试 认为下面的代码会限制候选人仅那些使用 TURN 服务器的 function onIce
  • 使用 boost asio 枚举我的卡的 ipv4 和 ipv6 地址

    我正在尝试枚举我的电脑的所有网卡 我有 2 张卡 的 ipv4 和 ipv6 地址 我正在使用以下代码来执行此操作 using boost asio ip tcp boost asio io service io service tcp r
  • Pkcs11Interop 从 HSM 读取密钥值

    我正在尝试使用 Pkcs11Interop 从 HSM 中提取密钥的值 我知道 密钥必须留在 HSM 中 但我需要它 所以 我已经用 NCryptoki 做到了 我也想用 Pkcs11Interop 做到这一点 我尝试了这段代码 Prepa
  • 使用 JavaScript 进行分页

    我有一些 html 代码 div class post 里面 我想用 javascript 对它们进行分页 我怎样才能做到这一点 我知道我可以用 PHP 来做 但我只想用 JS 来做 我的 php 生成的 html 看起来像这样 div d
  • openMPI/mpich2 不能在多个节点上运行

    我正在尝试在多节点集群上使用 install openMPI 和 mpich2 但在这两种情况下 我在多台计算机上运行时都遇到问题 使用 mpich2 我可以从头节点在特定主机上运行 但是如果我尝试从计算节点到不同节点运行某些内容 我会得到
  • 如何确定多边形点列表是否按顺时针顺序排列?

    有了一个点列表 如何找到它们是否按顺时针顺序排列 例如 point 0 5 0 point 1 6 4 point 2 4 5 point 3 1 5 point 4 1 0 会说它是逆时针的 或者对某些人来说是逆时针的 对于非凸多边形 例
  • 如果使用多个 EAGLView,则不会绘制纹理

    我在使用Apple EAGLView 和Texture2D 时遇到了一些问题 如果我创建 EAGLView 的实例并绘制一些纹理 效果会很好 但是 每当我创建 EAGLView 的第二个实例时 都不会绘制新视图中的纹理 作为 OpenGL
  • BSSID可以作为唯一标识符吗?

    我正在构建一个 Android 应用程序 列出用户周围的所有 wifi 网络 当用户尝试使用特定服务时 我的应用程序需要有关用户网络的信息 当我的应用程序从用户网络获取所有信息时 它会自动在我的数据库表中插入一个新行 其中包含所有这些必要的
  • JDBC 连接池选项:DBCP 与 C3P0 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 适用于 Java JDBC 的最佳连接池库是什么 我正在考虑两个主要候选者 免费 开源 阿帕奇 DBC
  • Django - 如何直接从表中的按钮删除对象

    对不起 我的英语不好 我需要删除一个对象 但直接从模板中的对象列表中删除 我有一个工作订单 其中有备件 但我不知道如何仅使用工作订单详细视图中的按钮来创建备件的删除视图 这个想法是用户单击 删除 按钮 这是备件的型号 class Order
  • SQL Server 使用 Case When 和常量的语法进行排序

    我正在阅读其他人编写的 TSQL 代码 发现语法有些奇怪 它通过字符串进行排序 我做了一些测试 以下是代码 任何人都可以帮我解释一下吗 谢谢 第一个查询 SELECT FROM dbo Products Result ProductID P
  • 如何配置“git pull --ff-only”和“git merge --no-ff”

    对我来说 典型的 git 工作流程是克隆远程存储库并使用 git pull 使其保持最新 我不想在拉取时合并提交 所以我使用 ff only 选项 我还为特色工作设立了当地分支机构 我想保留分支历史记录 因此当我将本地分支合并回本地克隆时
  • 找到总和为 K 的三个元素

    我编写了以下代码来查找总和为 K 的两个元素 include