4sumⅡ
来源:互联网 发布:内网域名和动态域名 编辑:程序博客网 时间:2024/06/06 10:41
Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l)
there are such thatA[i] + B[j] + C[k] + D[l]
is zero.
To make problem a bit easier, all A, B, C, D have same length of N where 0 ≤ N ≤ 500. All integers are in the range of -228 to 228 - 1 and the result is guaranteed to be at most 231 - 1.
Example:
Input:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]Output:2Explanation:The two tuples are:1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 02. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0
这道题最暴力直接的思路就是用四个循环,然后计算是否有和为0的一组数
但这样肯定会超时,所以我们可以把这四组数变为两个哈希表,然后用O(1)的算法找到和为0的那种情况,最终的时间复杂度O(n^2)
代码如下:
class Solution {public: void sum(vector<int> &a,vector<int> &b,unordered_map<int,int>&m) { for(int i=0;i<a.size();i++) { for(int j=0;j<b.size();j++) m[a[i]+b[j]]++; } } int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int,int> m1; unordered_map<int,int> m2; sum(A,B,m1); sum(C,D,m2); int ret=0; for(auto i=m1.begin();i!=m1.end();i++) { auto j=m2.find(-i->first); if(j!=m2.end()) { ret=ret+i->second*(j->second); } } return ret; }};
阅读全文
0 0
- 4sumⅡ
- 454. 4Sum Ⅱ
- 【Leetcode】4Sum (Sum)
- leetcode 2 sum 3sum 4sum
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 2Sum 3Sum 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 基于深度学习的目标检测算法:Faster R-CNN
- 【MyBatis】第一个入门例子
- SQL四种语言:DDL,DML,DCL,TCL
- Python3.5-Django1.11 使用pymysql 连接mysql
- hexo博客的制作
- 4sumⅡ
- Nginx配置文件模板
- 十二大 原子类型
- 选择排序
- Android webview 文字加图片混编
- network-协议总览
- 适配器模式
- 部分struts2标签用法
- 蓝桥杯java第五届决赛第一题--国王的遗产