LeetCode 454 4Sum II

从四个数组中分别取一个数,和为 0 的取法的个数

标签:数组类问题LeetCode发布于:编辑于:浏览量:1313

概述

https://leetcode.com/problems/4sum-ii/

哈希表记录两数之和

时间复杂度 O(n^2)

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        int n = nums1.size();
        unordered_map<int, int> m1;
        for (int i = 0; i < n; i ++) {
            for (int j = 0; j < n; j ++) {
                m1[nums1[i]+nums2[j]] ++;
            }
        }
        unordered_map<int, int> m2;
        for (int i = 0; i < n; i ++) {
            for (int j = 0; j < n; j ++) {
                m2[nums3[i]+nums4[j]] ++;
            }
        }     
        int ans = 0;
        for (auto iter = m1.begin(); iter != m1.end(); iter ++) {
            ans += iter->second * m2[-iter->first];
        }
        return ans;
    }
};