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/4/3 3:30:00

DLSS管理工具:突破性能瓶颈,释放显卡全部潜力

DLSS管理工具&#xff1a;突破性能瓶颈&#xff0c;释放显卡全部潜力 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 当你在《赛博朋克2077》的夜之城疾驰&#xff0c;却因帧率骤降错失关键剧情&#xff1b;当《艾尔登…

作者头像 李华
网站建设 2026/3/26 1:35:40

百度网盘极速下载技术解析:从原理到实战的高效解决方案

百度网盘极速下载技术解析&#xff1a;从原理到实战的高效解决方案 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download 在当今云存储普及的时代&#xff0c;百度网盘作为国内用户量庞大的云存储服务…

作者头像 李华
网站建设 2026/3/4 17:11:49

如何彻底解决Windows热键被占用的难题?Hotkey Detective实战指南

如何彻底解决Windows热键被占用的难题&#xff1f;Hotkey Detective实战指南 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否经历过这样的…

作者头像 李华
网站建设 2026/3/27 16:58:05

免费工具三步搞定Steam创意工坊模组下载:零基础使用指南

免费工具三步搞定Steam创意工坊模组下载&#xff1a;零基础使用指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法访问Steam创意工坊的精彩模组而头疼吗&#xff1…

作者头像 李华
网站建设 2026/3/27 21:11:00

DLSS Swapper完全使用指南:提升游戏画质与性能的全方位解决方案

DLSS Swapper完全使用指南&#xff1a;提升游戏画质与性能的全方位解决方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款强大的游戏优化工具&#xff0c;能够帮助玩家轻松管理、更新和替换游戏中…

作者头像 李华