Skip to content

Commit e63a867

Browse files
committed
solve : DaleStudy#241 (3Sum) with Java
1 parent 464a84a commit e63a867

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

3sum/kdh-92.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* 특이사항
3+
* 문제를 제대로 이해 못해서 풀이를 보며 이해했다.
4+
* 핵심은 중복 처리와 문제를 찾았을 때 종료가 아니라 다음 항목을 찾는 부분인 것 같다.
5+
* (추후 복습 예정)
6+
*/
7+
8+
class Solution {
9+
public List<List<Integer>> threeSum(int[] nums) {
10+
11+
// (1) ArrayList
12+
// 시간복잡도 : O(N^2), 공간복잡도 : O(N)
13+
List<List<Integer>> result = new ArrayList<>();
14+
Arrays.sort(nums);
15+
16+
for (int i = 0; i < nums.length; i++) {
17+
if (i > 0 && nums[i] == nums[i - 1]) continue;
18+
19+
int j = i + 1;
20+
int k = nums.length - 1;
21+
22+
while (j < k) {
23+
int sumNum = nums[i] + nums[j] + nums[k];
24+
25+
if (sumNum > 0) k--;
26+
else if (sumNum < 0) j++;
27+
else {
28+
result.add(Arrays.asList(nums[i], nums[j], nums[k]));
29+
j++;
30+
31+
while (nums[j] == nums[j - 1] && j < k) j++;
32+
}
33+
}
34+
}
35+
36+
return result;
37+
}
38+
}

0 commit comments

Comments
 (0)