news 2026/4/23 11:07:13

算法:四数相加||

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法:四数相加||

题目(四数相加 II)

本质是:给你 4 个数组 A、B、C、D统计有多少个四元组(i, j, k, l)满足A[i] + B[j] + C[k] + D[l] == 0

关键点

数组长度一般 ≤ 200

暴力 4 重循环是O(n^4)必超时

核心思想:把「四数相加」拆成「两数相加 + 两数相加」

这是这道题的灵魂。

数学变形

A[i] + B[j] + C[k] + D[l] = 0 ↓ (A[i] + B[j]) = -(C[k] + D[l])

也就是说:

只要某个 (a + b)等于某个 -(c + d)那么它们就能凑成 0

为什么用 unordered_map?

因为你需要做两件事:

  1. 统计 A + B 的所有可能结果

  2. 快速查找 -(C + D) 是否存在

哈希表刚好满足:

插入:O(1)

查找:O(1)

代码:

int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int, int> umap; //key:a+b的数值,value:a+b数值出现的次数 // 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中 for (int a : A) { for (int b : B) { umap[a + b]++; } } int count = 0; // 统计a+b+c+d = 0 出现的次数 // 再遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。 for (int c : C) { for (int d : D) { if (umap.find(0 - (c + d)) != umap.end()) { count += umap[0 - (c + d)]; } } } return count; }

时间复杂度分析

部分复杂度
构建 A+BO(n²)
遍历 C+DO(n²)
哈希查找O(1)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:23:54

差分信号布线在PCB原理图设计中的应用详解

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、老练、有工程师现场感 ✅ 摒弃“引言/核心/应用/总结”等模板化结构&#xff0c;以 真实设计逻辑流 组织全文 ✅ 所有技…

作者头像 李华
网站建设 2026/4/18 20:49:06

告别环境配置烦恼!YOLOE镜像开箱即用实测分享

告别环境配置烦恼&#xff01;YOLOE镜像开箱即用实测分享 你有没有过这样的经历&#xff1a;凌晨两点&#xff0c;对着终端里第7次报错的 ImportError: cannot import name MultiScaleDeformableAttention 发呆&#xff1b;CUDA版本、PyTorch编译方式、CLIP分支兼容性……光是…

作者头像 李华
网站建设 2026/4/18 10:39:23

5个专业级技巧:DLSS Swapper如何优化游戏超采样性能

5个专业级技巧&#xff1a;DLSS Swapper如何优化游戏超采样性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 在3A游戏画质持续提升的当下&#xff0c;玩家常面临"画质-性能"的两难选择&#xff1a;开启DL…

作者头像 李华
网站建设 2026/4/18 1:50:13

流媒体下载难题终结者:N_m3u8DL-RE如何让视频保存变得简单高效

流媒体下载难题终结者&#xff1a;N_m3u8DL-RE如何让视频保存变得简单高效 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u…

作者头像 李华
网站建设 2026/4/20 22:47:01

3分钟上手BetterNCM Installer:网易云音乐插件管理的免费高效工具

3分钟上手BetterNCM Installer&#xff1a;网易云音乐插件管理的免费高效工具 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否遇到过网易云音乐插件安装繁琐、版本不兼容的问题&…

作者头像 李华
网站建设 2026/4/22 12:19:32

YOLO11如何提升召回率?Anchor聚类实战

YOLO11如何提升召回率&#xff1f;Anchor聚类实战 在目标检测任务中&#xff0c;召回率&#xff08;Recall&#xff09;直接关系到模型能否“不漏检”——尤其是对小目标、密集目标或遮挡场景下的关键对象。很多开发者发现&#xff0c;YOLO11默认配置下在特定数据集上漏检明显…

作者头像 李华