Skip to content

Commit 07f1385

Browse files
committed
3Sum
1 parent f0bb27b commit 07f1385

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

3sum/iam-edwin.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
import java.util.HashSet;
4+
import java.util.List;
5+
import java.util.Map;
6+
import java.util.Set;
7+
8+
class Solution {
9+
public List<List<Integer>> threeSum(int[] nums) {
10+
List<List<Integer>> result = new ArrayList<>();
11+
12+
Map<Integer, Integer> counter = new HashMap<>();
13+
for (int num : nums) {
14+
int count = counter.getOrDefault(num, 0);
15+
counter.put(num, count + 1);
16+
}
17+
18+
Set<Integer> keySet = new HashSet<>(counter.keySet());
19+
for (int num1 : keySet) {
20+
int num1Count = counter.get(num1);
21+
if (num1Count > 1) {
22+
counter.put(num1, num1Count - 1);
23+
} else {
24+
counter.remove(num1);
25+
}
26+
27+
for (int num2 : counter.keySet()) {
28+
int num3 = -num1 - num2;
29+
int count = counter.getOrDefault(num3, 0);
30+
if (((num2 == num3 && count >= 2) || (num2 != num3 && count >= 1)) && num3 >= num2) {
31+
result.add(List.of(num1, num2, num3));
32+
}
33+
}
34+
35+
counter.remove(num1);
36+
}
37+
38+
return result;
39+
}
40+
}

0 commit comments

Comments
 (0)