题目

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

分析

关键是如何想到用map,怎么用map?本题目和三数之和、四数之和题目有本质的区别,本题是经典哈希,

而那两道题目是双指针加去重。因为本题实际就是看有多少种满足条件的数组索引组合,和两数之和返回

索引拿到题目用到的知识一样,用map。怎么用?也就是key-value应该保存什么?这就是本题目的重点。

key存放A和B两数组元素之和,value存放这个和出现的次数。然后查找这些中有没有等于-(c+d)的——经典

map查找find。。。。

 1 class Solution {
2 public:
3 int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
4 unordered_map<int,int>mp;
5 for(int a : A)
6 for(int b : B)
7 mp[a+b]++;
8 int count = 0;
9 for(int c : C)
10 for(int d : D){
11 if(mp.find(0-(c+d)) != mp.end())
12 count += mp[0-(c+d)];
13 }
14 return count;
15 }
16 };

总结

我为什么说这题和两数之和那道题异曲同工?发现这题的突破点还是将4个数拆成两组,最后回归到找

map中是否有另一个数。这难道不就是推广了的两数之和吗!!!四个数看成两个数,这道题目就是两

数之和问题,如此破题!

自己还是新手刷的少,开始没思路!以后要经典题目反复刷,就像老唐说的,重点不是做了多少题,而

是做了多少总结!

最新文章

  1. iFrame 功能详解
  2. Java 8 指南
  3. Linux运维人员共用root帐户权限审计
  4. Evolutionary Computing: 4. Review
  5. ng-click
  6. NSThread基础使用
  7. HttpClient, 使用C#操作Web
  8. Poweroff – 很好很强大的定制关机工具
  9. EasyUI两种动态添加tab Iframe页面的方法
  10. Attempt to write to field &#39;android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager&#39; on a null object reference
  11. Long Long Ago 二分查找
  12. CAS 无锁式同步机制
  13. 【XSY2669】归并排序 树状数组 简单组合数学
  14. mongodb 系列 ~ mongo的副本集(2)
  15. 060 SparkStream 的wordcount示例
  16. nginx 支持的命令行参数
  17. docker部署rabbitMQ
  18. 自己对war包解压的误区
  19. opencv各种绘图 直线 矩形 圆 椭圆
  20. Vue项目中跨域的几种方式

热门文章

  1. 【Django admin 中文配置】
  2. Samba:error nt_status_host_unreachable
  3. HBase过滤器:SingleColumnValueFilter和FirstKeyOnlyFilter一起使用的问题
  4. Open SSH CVE-2020-15778
  5. Docker Networks 笔记
  6. PHP简单的计算位数的函数
  7. mysqld程序结构介绍
  8. (十五)、shell脚本之简单控制流结构
  9. 图灵学院java架构师vip课程第二期 完整版课程下载 无加密
  10. Linux下登录Oracle命令行时删除键^H解决方法