Skip to content

Commit a95d0b7

Browse files
committed
add solution for 3sum
1 parent 73acda3 commit a95d0b7

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

3sum/Ujoonnee.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import java.util.*;
2+
import java.util.stream.Collectors;
3+
4+
class Solution {
5+
public List<List<Integer>> threeSum(int[] nums) {
6+
Map<Integer, Integer> map = new HashMap<>();
7+
for(int i = 0; i < nums.length; i++) {
8+
map.put(nums[i], i);
9+
}
10+
11+
Set<Triplet> set = new HashSet<>();
12+
for(int i = 0; i < nums.length; i++) {
13+
int target = -nums[i];
14+
for(int j = i+1; j < nums.length; j++) {
15+
int operand = target - nums[j];
16+
if (map.containsKey(operand) && map.get(operand) > j) {
17+
set.add(new Triplet(nums[i], nums[j], operand));
18+
}
19+
}
20+
}
21+
22+
return set.stream().map(t -> List.of(t.triplet[0], t.triplet[1], t.triplet[2])).collect(Collectors.toList());
23+
}
24+
}
25+
26+
class Triplet {
27+
int[] triplet;
28+
29+
Triplet(int first, int second, int third) {
30+
this.triplet = new int[] { first, second, third };
31+
Arrays.sort(triplet);
32+
}
33+
34+
@Override
35+
public boolean equals(Object o) {
36+
if (this == o) return true;
37+
if (!(o instanceof Triplet that)) {
38+
return false;
39+
}
40+
41+
for(int i = 0; i<3; i++) {
42+
if (this.triplet[i] != that.triplet[i]) {
43+
return false;
44+
}
45+
}
46+
47+
return true;
48+
}
49+
50+
@Override
51+
public int hashCode() {
52+
return Objects.hash(triplet[0], triplet[1], triplet[2]);
53+
}
54+
}

0 commit comments

Comments
 (0)