454. 4Sum II

来源:互联网 发布:windows iis邮件服务器 编辑:程序博客网 时间:2024/04/28 18:33

1、题目描述

给出ABCD四个数组,每个数组选一个数字,使得四个数之和为0,返回四元组数量。


2、思路

Hash Table。

将A一元素与B的一元素之和存入哈希表。复杂度O(n^2).

对于每个由C一元素与D的一元素组成的二元组,在哈希表中查找它们的和的相反数是否已经存在。

若存在,则计数加1。

复杂度O(n^2).


3、代码

int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {        int ans = 0;        int l=A.size();        map<int,int>m;        for(int i=0;i<l;i++){            for(int j=0;j<l;j++)                m[C[i]+D[j]]++;        }        for(int i=0;i<l;i++){            for(int j=0;j<l;j++){                int x = A[i]+B[j];                if(m.find(-x)!=m.end())                    ans+=m[-x];            }        }        return ans;    }


原创粉丝点击