Skip to content

Commit d261f6d

Browse files
authored
Merge pull request #1968 from UtkarshBirla28/main
Added Leetcode solution 0454-4Sum-II
2 parents 959a625 + cb21926 commit d261f6d

File tree

2 files changed

+134
-2
lines changed

2 files changed

+134
-2
lines changed

dsa-problems/leetcode-problems/0400-0499.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ export const problems = [
338338
"problemName": "454. 4Sum II",
339339
"difficulty": "Medium",
340340
"leetCodeLink": "https://leetcode.com/problems/4sum-ii",
341-
"solutionLink": "#"
341+
"solutionLink": "/dsa-solutions/lc-solutions/0400-0499/4Sum-II"
342342
},
343343
{
344344
"problemName": "455. Assign Cookies",
@@ -619,4 +619,4 @@ export const problems = [
619619
collectionLink="https://leetcode.com/study-plan/programming-skills"
620620
/>
621621

622-
Now, you can see the list of problems in a table format. You can click on the problem link to view the problem on the LeetCode website. You can also click on the solution link to view the solution of the problem.
622+
Now, you can see the list of problems in a table format. You can click on the problem link to view the problem on the LeetCode website. You can also click on the solution link to view the solution of the problem.
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
id: 4Sum-II
3+
title: 4Sum II (LeetCode)
4+
sidebar_label: 0454-4Sum-II
5+
tags:
6+
- Hash Table
7+
- Arrays
8+
description: "Given a string s, sort it in decreasing order based on the frequency of the characters. The frequency of a character is the number of times it appears in the string."
9+
sidebar_position: 0451
10+
---
11+
## Problem Description
12+
13+
Given four integer arrays nums1, nums2, nums3, and nums4 all of length n, return the number of tuples (i, j, k, l) such that:
14+
15+
`0 <= i`, `j`, `k`, `l < n`
16+
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
17+
18+
## Examples
19+
20+
Example 1:
21+
22+
Input: nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
23+
Output: 2
24+
Explanation:
25+
The two tuples are:
26+
1. (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0
27+
2. (1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0
28+
29+
Example 2:
30+
31+
Input: nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]
32+
Output: 1
33+
34+
## Constraints
35+
36+
- n == nums1.length
37+
- n == nums2.length
38+
- n == nums3.length
39+
- n == nums4.length
40+
- `1 <= n <= 200`
41+
- `-228 <= nums1[i], nums2[i], nums3[i], nums4[i] <= 228`
42+
43+
## Approach
44+
45+
Create an empty map called "mp" to store integer keys and their corresponding counts.
46+
47+
Iterate over each element "k" in the "nuns3" vector.
48+
49+
For each "k", iterate over each element "l" in the "nums4" vector.
50+
51+
Add the sum of "k" and "l" as a key in the map "mp" and increment its count by 1.
52+
53+
Initialize a variable "count" to 0.
54+
55+
Iterate over each element "i" in the "nums1" vector.
56+
57+
For each "i", iterate over each element "j" in the "nums2" vector.
58+
59+
Find the value associated with the key -(i + j) in the map "mp" and add it to the "count".
60+
61+
Return the value of "count" as the result.
62+
63+
### Solution Code
64+
65+
#### C++
66+
67+
```c++
68+
class Solution {
69+
public:
70+
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
71+
72+
unordered_map<int,int> mp;
73+
74+
75+
for(int k : nums3)
76+
for(int l : nums4)
77+
mp[k + l]++;
78+
79+
80+
int count = 0;
81+
for(int i : nums1)
82+
for(int j : nums2)
83+
count += mp[-(i + j)];
84+
85+
return count;
86+
}
87+
};
88+
```
89+
90+
#### java
91+
```java
92+
93+
class Solution {
94+
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
95+
Map<Integer, Integer> map = new HashMap<>();
96+
for (int n1 : nums1) {
97+
for (int n2 : nums2) {
98+
map.put(n1 + n2, map.getOrDefault(n1 + n2, 0) + 1);
99+
}
100+
}
101+
102+
int count = 0;
103+
for (int n3 : nums3) {
104+
for (int n4 : nums4) {
105+
count += map.getOrDefault(-(n3 + n4), 0);
106+
}
107+
}
108+
return count;
109+
}
110+
}
111+
112+
```
113+
#### Python
114+
```Python
115+
class Solution:
116+
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
117+
dc1=defaultdict(lambda:0)
118+
for a in nums1:
119+
for b in nums2:
120+
dc1[a+b]+=1
121+
ans=0
122+
for c in nums3:
123+
for d in nums4:
124+
ans+=dc1[-c-d]
125+
return ans
126+
127+
```
128+
129+
## Conclusion
130+
131+
- 1. Time complexity:O(n^2)
132+
- 2. Space complexity:O(n^2)

0 commit comments

Comments
 (0)