Skip to content

Commit 46ec388

Browse files
committed
3sum solution
1 parent 40afe41 commit 46ec388

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.List;
4+
5+
public class kimjunyoung90 {
6+
public List<List<Integer>> threeSum(int[] nums) {
7+
List<List<Integer>> answers = new ArrayList<>();
8+
//์ˆซ์ž๋“ค์„ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•ด์„œ 3๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ ฌ์„ ์—†๊ฒŒ ๋งŒ๋“ค์ž..
9+
Arrays.sort(nums);
10+
11+
// 1. ์š”์†Œ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 3๊ฐœ์˜ ์ˆซ์ž ์กฐํ•ฉ์„ ์ฐพ์Œ
12+
for (int i = 0; i < nums.length - 2; i++) {
13+
14+
//i ๊ฐ’์ด ์ „ ์š”์†Œ๋ž‘ ๊ฐ™์€ ๊ฒฝ์šฐ ํƒ์ƒ‰ ๊ฑด๋„ˆ ๋„๊ธฐ
15+
if (i > 0 && nums[i] == nums[i - 1]) continue;
16+
17+
//two pointer ์ ์šฉ
18+
int left = i + 1;
19+
int right = nums.length - 1;
20+
21+
while (left < right) {
22+
int sum = nums[i] + nums[left] + nums[right];
23+
if (sum == 0) {
24+
answers.add(Arrays.asList(nums[i], nums[left], nums[right]));
25+
26+
//left ์ค‘๋ณต ์ฒดํฌ
27+
while (left < right && nums[left] == nums[left + 1]) left++;
28+
29+
//right ์ค‘๋ณต ์ฒดํฌ
30+
while (left < right && nums[right] == nums[right - 1]) right--;
31+
32+
left++;
33+
right--;
34+
} else if (sum < 0) {
35+
left++;
36+
} else {
37+
right--;
38+
}
39+
}
40+
}
41+
42+
return answers;
43+
}
44+
}

0 commit comments

Comments
ย (0)