leetcode 454 四数相加II

简介: leetcode 454 四数相加II

四数相加

1e028eb86b5949b6bd9ef4a6f3358dba.png

四个数字和为0 , 统计前两个数的和出现次数。然后统计后两个数和是0减两个数和的情况。

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
       unordered_map<int, int> num_map;
        for (int i = 0; i < nums1.size(); i++)
        {
            for (int j = 0; j < nums2.size(); j++)
            {
                num_map[ nums1[i] + nums2[j] ]++;
            }
        }
        int count = 0;
        for (int i = 0; i < nums3.size(); i++)
        {
            for (int j = 0; j < nums4.size(); j++)
            {
                if (num_map.find(0 - nums3[i] - nums4[j]) != num_map.end()) count += num_map[0 - nums3[i] - nums4[j]];
            }
        }
        return count;
    }
};

cpp11写法

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        unordered_map<int, int> num_map;
        for (auto i  : nums1)
        {
            for (auto j : nums2)
            {
                num_map[ i+j ]++;
            }
        }
        int count = 0;
        for (auto i : nums3)
        {
            for (auto j  : nums4 )
            {
                if (num_map.find(0 - i- j) != num_map.end()) count += num_map[0 - i - j];
            }
        }
        return count;
    }
};

二刷

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        int result = 0;
        unordered_map<int,int> my_map;
        for(int i=0 ; i<nums1.size() ;i++)
        {
             for(int j=0 ; j<nums2.size() ;j++)
             {
                 my_map[nums1[i] + nums2[j]]++;
             }
        }
        for(int i=0 ; i<nums3.size() ;i++)
        {
             for(int j=0 ; j<nums4.size() ;j++)
             {
                if(my_map.find(0-nums3[i]-nums4[j]) != my_map.end())
                    result += my_map[0-nums3[i]-nums4[j]];
             }
        }
        return result;
    }
};
相关文章
|
算法
LeetCode:454. 四数相加 II
题目描述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
108 0
|
4月前
【LeetCode 14】454.四数相加 II
【LeetCode 14】454.四数相加 II
40 1
|
9月前
|
人工智能 Java C++
leetcode-454:四数相加 II
leetcode-454:四数相加 II
54 1
|
人工智能 算法 前端开发
「LeetCode」454-四数相加||⚡️
「LeetCode」454-四数相加||⚡️
109 0
「LeetCode」454-四数相加||⚡️
|
算法 索引
LeetCode每日1题--四数相加 II
LeetCode每日1题--四数相加 II
131 0
|
存储
LeetCode每日打卡-2. 两数相加
LeetCode每日打卡-2. 两数相加 18
109 0
LeetCode每日打卡-2. 两数相加
|
存储
LeetCode 2. 两数相加
LeetCode 2. 两数相加
82 0
|
存储 算法 Java
【LeetCode:02 两数相加】
【LeetCode:02 两数相加】
137 0
|
6月前
|
JavaScript 前端开发 PHP
leetcode——两数相加【二】
leetcode——两数相加【二】
40 0

热门文章

最新文章