四数之和

news/2025/3/30 18:46:12/文章来源:https://www.cnblogs.com/xuzhenxuexi/p/18795990

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。
为了使问题简单化,所有的 A, B, C, D 具有相同的⻓度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28 到 2^28 - 1
之间,最终结果不会超过 2^31 - 1 。
例如:
输⼊:
A = [ 1, 2]
B = [-2,-1]
C = [-1, 2]
// 遍历当前元素,并在map中寻找是否有匹配的key
auto iter = map.find(target - nums[i]);
if(iter != map.end()) {
return {iter->second, i};
}
// 如果没找到匹配对,就把访问过的元素和下标加⼊到map中
map.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
D = [ 0, 2]
输出:
2
解释:
两个元组如下:

  1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0
  2. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0

本题解题步骤:

  1. ⾸先定义 ⼀个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
  2. 遍历⼤A和⼤B数组,统计两个数组元素之和,和出现的次数,放到map中。
  3. 定义int变量count,⽤来统计 a+b+c+d = 0 出现的次数。
  4. 在遍历⼤C和⼤D数组,找到如果 0-(c+d) 在map中出现过的话,就⽤count把map中key对应的value也就是出
    现次数统计出来。
  5. 最后返回统计值 count 就可以了

代码展示:

class Solve{public:int sum(vector<int>&A,vector<int>&B,vector<int>&C,vector<int>&D){unordered_map<int ,int>map;for(auto a:A){for(auto b:B){map[a+b]++;}}int cnt=0;for(auto c:C){for(auto d:D){if(map.find(0-(c+d))!=map.end()){cnt+=map[0-(c+d)];}}}return cnt;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906689.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 vxe-table 来实现左边是树,右边是表格联动功能

使用 vxe-table 来实现左边是树,右边是表格联动功能,当需要实现左右两侧联动时,表格 vxe-grid 配合分割模板 vxe-split 就很容易实现了 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table 预览代…

day:31 pymysql(1)

一、pymysql下载 1、dos下安装: pip3 install pymysql 或pip install pymysql2、在pycharm中下载二、pymysql连接 (1)数据安装好,能连接(2)连接数据库1、连接方式:pymysql.Connection 或者pymysql.connect 2、包含内容 a.host 主机:填写IP地址 b.user 数据库用…

004 - 创建Runners , 就是创建编译node节点服务器

点击Admin:点击CICD 里面的Runner, 这里的CICD和我之前创建的CICD group没有任何关系. 点击 New instance runner 选择linux服务器, 然后点击 How do i install Gitlab Runner, 需要在node节点安装gitlab-runner 工具,让node节点连接到gitlab 服务器 , 然后就可以被gitlab的…

P1223 排队接水

方法1:冒泡排序方法2:sort

Web3.0时代,DAO如何颠覆传统项目管理?2025年组织治理的范式革命

当全球Web3市场规模突破800亿美元,传统项目管理正遭遇前所未有的范式挑战。麦肯锡研究显示,采用去中心化自治组织(DAO)模式的项目,其决策效率比传统架构提升300%,资源浪费减少75%。这场由区块链技术驱动的管理革命,正在重构项目治理的核心逻辑。一、DAO项目治理的三大底…

一文读懂2024!2025往“这”瞧 |《2024 IT行业项目管理调查报告》发布!

在科技一日千里的当下,IT行业始终站在时代前沿,不断推动着社会的发展与进步。 项目管理作为IT行业稳健前行的关键保障,其重要性不言而喻。 为深入洞察IT行业项目管理态势,给从业者提供权威、实用的参考依据,禅道于2024年年底开展了IT行业项目管理调查。 经过严密的数据收集…