Skip to content

Commit 9baa604

Browse files
committed
3sum
1 parent 5408ba1 commit 9baa604

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

โ€Ž3sum/se6816.javaโ€Ž

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import java.util.*;
2+
3+
/**
4+
ํ’€์ด :
5+
์ •๋ ฌ์„ ํ•œ ๋’ค, ํ•œ์ ์„ ๊ธฐ์ค€์ ์œผ๋กœ ์‚ผ๊ณ , ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹
6+
7+
๋ณต์žก๋„ ๊ณ„์‚ฐ :
8+
๋งค๊ฐœ๋ณ€์ˆ˜ nums์˜ ๊ธธ์ด -> N
9+
์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N^2)
10+
๊ณต๊ฐ„ ๋ณต์žก๋„ : O(N^2)
11+
*/
12+
class Solution {
13+
public List<List<Integer>> threeSum(int[] nums) {
14+
Arrays.sort(nums);
15+
List<List<Integer>> result = new ArrayList<>();
16+
for(int i = 0; i < nums.length-2; i++) {
17+
18+
// ์ด์ „๊ณผ ๊ฐ™์€ ๊ธฐ์ค€์ ์ด ๋‚˜์˜ค๋ฉด, ์ค‘๋ณต์œผ๋กœ result์— ๋“ฑ๋ก๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, continue
19+
if(i > 0 && nums[i] == nums[i - 1]){
20+
continue;
21+
}
22+
23+
// ์ •๋ ฌํ•œ ์ƒํ™ฉ์—์„œ ๊ธฐ์ค€์ ์ด ์–‘์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฉด, ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅ
24+
if(nums[i] > 0){
25+
break;
26+
}
27+
28+
int targetSum = 0 - nums[i];
29+
30+
int left = i + 1;
31+
int right = nums.length - 1;
32+
33+
34+
while(left < right) {
35+
if((nums[left] + nums[right]) > targetSum) {
36+
right--;
37+
}else if((nums[left] + nums[right]) < targetSum) {
38+
left++;
39+
}else {
40+
// ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€์— ๋Œ€ํ•œ if๋ฌธ
41+
if((right == nums.length - 1) || (nums[right] != nums[right+1])) {
42+
result.add(Arrays.asList(nums[i], nums[left], nums[right]));
43+
}
44+
left++;
45+
right--;
46+
}
47+
}
48+
}
49+
return result;
50+
}
51+
}

0 commit comments

Comments
ย (0)