LeetCode刷题记录.Day10

四数相加II

题目链接454. 四数相加 II - 力扣(LeetCode)

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        unordered_map<int, int> map;
        int count = 0;
        for(int a : nums1){
            for(int b : nums2){
                map[a + b]++; //记录前两个数组元素和,和的值为key,次数为value
            }
        }
        for(int c : nums3){
            for(int d : nums4){
                if(map.find(0 - c - d) != map.end()){
                    count += map[0 - c - d]; //如果能找到一个key为c+d的相反数,说明符合题意,他的value为增加的次数。
                }
            }
        }
        return count;
    }
};

基本思路还是类似,涉及多次反复查找的时候就可以 用哈希。把值变成索引来快速查找。写的时候有些细节没有太注意

posted @ 2022-11-09 22:43  凱風快晴  阅读(19)  评论(0)    收藏  举报