454. 4Sum II 难度:medium
2017-01-01 20:02
260 查看
题目:
Given four lists A, B, C, D of integer values, compute how many tuples
are such that
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:
思路:
用空间换时间,使用两个map,时间复杂度是O(N^2)。
程序:
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
int n=A.size();
if(0==n)
return 0;
unordered_map<int,int>map1;
unordered_map<int,int>map2;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
int add=A[i]+B[j];
map1[add]++;
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
int add=C[i]+D[j];
map2[add]++;
}
int count=0;
for(auto it=map1.begin();it!=map1.end();it++)
{
int target=it->first;
if(map2.find(-target)!=map2.end())
count=count+map1[target]*map2[-target];
}
return count;
}
};
Given four lists A, B, C, D of integer values, compute how many tuples
(i, j, k, l)there
are such that
A[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: 2 Explanation: The two tuples are: 1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0 2. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0
思路:
用空间换时间,使用两个map,时间复杂度是O(N^2)。
程序:
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
int n=A.size();
if(0==n)
return 0;
unordered_map<int,int>map1;
unordered_map<int,int>map2;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
int add=A[i]+B[j];
map1[add]++;
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
int add=C[i]+D[j];
map2[add]++;
}
int count=0;
for(auto it=map1.begin();it!=map1.end();it++)
{
int target=it->first;
if(map2.find(-target)!=map2.end())
count=count+map1[target]*map2[-target];
}
return count;
}
};
相关文章推荐
- eclipse配色方案
- Android的so注入( inject)和函数Hook(基于got表) - 支持arm和x86
- php-fpm配置文件
- jdk环境变量配置
- nginx启动脚本和配置文件
- CSS
- 搭建一个开发Predix软件的Windows系统(4)配置Java开发环境
- 测试php解析
- Nginx编译安装
- 【k8s系列01】基本概念
- Java基础学习笔记
- HTML基础:文本的排版格式(5)
- VMware12安装Windows7(三)-简单优化 Win7 系统
- php编译安装
- new 和内存四区的 交情
- 成熟是人一辈子的修养,与年龄无关
- TJU 2248 Channel Design(最小树形图)
- quick-cocos-2d-x学习
- 数据结构(十二) 二叉树的基本操作 --- 创建一个二叉树 前中后序遍历二叉树
- ZCMU—1200