leetcode(리트코드)-454 4Sum II
leetcode 454 - 4Sum II 문제입니다.
1. 문제
https://leetcode.com/problems/4sum-ii/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
Top Interview 문제입니다.
4. 문제 해석
- 벡터 4개가 들어옵니다.
- 4개의 벡터에서 요소를 하나씩 골라, 더한 값이 0이되는 경우의 수를 구해 리턴합니다.
5. code
코드설명
- O(n^4)로 풀면 효율성 문제가 나므로, O(2*n^2)의 시간복잡도로 해결합니다.
c++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int> um;
for(auto a : nums1){
for(auto b : nums2){
um[a+b]++;
}
}
int res = 0 ;
for(auto c : nums3){
for(auto d : nums4){
//만약에 반대쌍인 경우가 있으면,
auto it = um.find(0 - c - d);
if(it!=um.end()){
//중복을 고려
res += it->second;
}
}
}
return res;
}
};
6. 결과 및 후기, 개선점
c++ 61% 4ms
This post is licensed under CC BY 4.0 by the author.