454哈希表-四数相加
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了454哈希表-四数相加相关的知识,希望对你有一定的参考价值。
题目
链接:454. 四数相加 II - 力扣(LeetCode)
思路
- 定义一个map,key存放两数之和,value存放两数之和出现的次数
- 遍历前两个数组,统计两数之和,两数之和出现的次数,放到map中
- 定义res 存放四数之和为0出现的次数
- 遍历后两个数组,如果找到0-(前两数组之和)在map中出现过的话,就用res加上value对应的值来统计对应次数
代码
class Solution
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4)
Map<Integer,Integer> map = new HashMap<>();
int temp;
int res = 0;
//统计两个数组中的元素之和,同时统计出现的次数,放入map中
for(int i : nums1)
for(int j : nums2)
temp = i + j;
if(map.containsKey(temp))
map.put(temp,map.get(temp) + 1);
else
map.put(temp,1);
//统计剩余的两个元素的和,在map中找是否存在相加为0的情况,同时记录次数
for(int i : nums3)
for(int j : nums4)
temp = i + j;
if(map.containsKey(0 - temp))
res += map.get(0 - temp);
return res;
以上是关于454哈希表-四数相加的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第7天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结