力扣:454.四数相加 ||
题目:
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <&#61; i, j, k, l nums1[i] &#43; nums2[j] &#43; nums3[k] &#43; nums4[l] &#61;&#61; 0
解析&#xff1a;
将四数化为两数,然后与上题类似操作。a、b、c、d,化为 a&#43;b 、 c&#43;d。
统计所有可能 a&#43;b 的结果以及次数入map中&#xff0c;然后依次遍历 c&#43;d 的结果看与其互补的值在map中是否存在。存在则将其次数加入统计遍历sum中。
代码&#xff1a;
class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int sum &#61; 0;unordered_map<int, int> m;for(int i:nums1){for(int j:nums2){&#43;&#43;m[i&#43;j];}}for(int i : nums3){for(int j : nums4){if(m.find(0-(i&#43;j)) !&#61; m.end()){sum &#43;&#61; m[0-(i&#43;j)];}}}return sum;}
};