news 2026/4/3 5:52:27

算法:四数相加||

作者头像

张小明

前端开发工程师

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/3/27 3:26:00

BusyBox定制化工具链打包流程详解

以下是对您提供的博文《BusyBox定制化工具链打包流程详解》的 深度润色与专业重构版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、老练、有“人味”——像一位在一线踩过无数坑的嵌入式系统工程师&#xff0c;在茶水间边喝咖啡边…

作者头像 李华
网站建设 2026/4/1 10:57:29

2个强力激活方案:Beyond Compare 5授权码生成的完整指南

2个强力激活方案&#xff1a;Beyond Compare 5授权码生成的完整指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当Beyond Compare 5的30天评估期结束时&#xff0c;用户将面临功能限制的困扰…

作者头像 李华
网站建设 2026/3/30 16:28:35

Z-Image-Turbo_UI界面性能提升秘籍:加载更快更稳定

Z-Image-Turbo_UI界面性能提升秘籍&#xff1a;加载更快更稳定 1. 为什么UI卡顿不是你的错&#xff0c;而是可优化的工程问题 你是否遇到过这样的情况&#xff1a;刚启动 Z-Image-Turbo_UI&#xff0c;浏览器打开 http://localhost:7860 后&#xff0c;页面空白等待超过15秒&…

作者头像 李华
网站建设 2026/4/3 7:51:53

3分钟解决!彻底告别Windows热键冲突的实用指南

3分钟解决&#xff01;彻底告别Windows热键冲突的实用指南 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否经历过这样的时刻&#xff1a;按…

作者头像 李华
网站建设 2026/3/27 2:29:49

LogViewer:革新性日志分析工具效率倍增指南

LogViewer&#xff1a;革新性日志分析工具效率倍增指南 【免费下载链接】LogViewer 项目地址: https://gitcode.com/gh_mirrors/logvie/LogViewer 在日常开发和系统维护中&#xff0c;日志分析是定位问题的关键环节&#xff0c;但传统工具往往面临三大痛点&#xff1a;…

作者头像 李华
网站建设 2026/4/3 18:27:24

旧Mac升级完全指南:突破硬件限制的系统破解与优化教程

旧Mac升级完全指南&#xff1a;突破硬件限制的系统破解与优化教程 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 旧Mac设备因硬件限制无法升级最新系统&#xff1f;通过O…

作者头像 李华