1- import java .util .ArrayList ;
2- import java .util .Arrays ;
31import java .util .List ;
42
5- /**
6- * ๋ฌธ์ ํ์ด
7- */
8- // -4 -1 -1 0 2 2
9- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
10- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
11- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
12- // p1 p2p3 sum = 0 -> p1 ์์ผ๋ก
13- // p1 p2 p3 sum = 0 -> p3 ๊ฐ ๋ค๋ฅธ ๊ฒ ๋์ฌ ๋๊น์ง ์ด๋
14- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก ์ธ๋ฐ, p2 > p3 ๋๋ฏ๋ก p1 ์์ผ๋ก
15- // p1 p2 p3 sum = 0 ๋ฐ๋ณต
3+ class Solution {
4+ public List <List <Integer >> threeSum (int [] nums ){
165
17- /**
18- * ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋
19- */
20- // ์๊ฐ ๋ณต์ก๋ - ์ํ ํ์: n + (n-1) + (n-2) + .. => O(N^2)
21- // ๊ณต๊ฐ ๋ณต์ก๋ - ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๋ฐ O(n log n)์ ๊ณต๊ฐ + ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ answer ๋ฆฌ์คํธ๋ ๋ฌธ์ ์ ์๊ตฌ์ ๋ฐ๋ผ O(k)์ ๊ณต๊ฐ = O(n log n) (๋ฐฐ์ด ์ ๋ ฌ์ ์ํ ๊ณต๊ฐ) + O(k) (๊ฒฐ๊ณผ ์ ์ฅ ๊ณต๊ฐ)
22-
23- class Solution {
24- public List <List <Integer >> threeSum (int [] nums ) {
25- Arrays .sort (nums ); // Sort the array first
26- List <List <Integer >> answer = new ArrayList <>();
27-
28- for (int pointer1 = 0 ; pointer1 < nums .length - 2 ; pointer1 ++) {
29- // pointer1 ์ ์ค๋ณต ๊ฐ skip
30- if (pointer1 > 0 && nums [pointer1 ] == nums [pointer1 - 1 ]) {
31- continue ;
32- }
33-
34- int pointer2 = pointer1 + 1 ; // pointer2 ๋ pointer1 ์ ํ ์นธ ์
35- int pointer3 = nums .length - 1 ; // pointer3 ๋ ๋์์ ๋ถํฐ
36-
37- while (pointer2 < pointer3 ) {
38- int sum = nums [pointer1 ] + nums [pointer2 ] + nums [pointer3 ];
39-
40- if (sum < 0 ) {
41- pointer2 ++;
42- } else if (sum > 0 ) {
43- pointer3 --;
44- } else {
45- // sum == 0
46- answer .add (Arrays .asList (nums [pointer1 ], nums [pointer2 ], nums [pointer3 ]));
47-
48- // pointer2 ์ค๋ณต ๊ฐ ์ ๊ฑฐ
49- while (pointer2 < pointer3 && nums [pointer2 ] == nums [pointer2 + 1 ]) {
50- pointer2 ++;
51- }
52-
53- // pointer3 ์ค๋ณต ๊ฐ ์ ๊ฑฐ
54- while (pointer2 < pointer3 && nums [pointer3 ] == nums [pointer3 - 1 ]) {
55- pointer3 --;
56- }
57-
58- // ๋ ๊ฐ ๋ชจ๋ move
59- pointer2 ++;
60- pointer3 --;
61- }
62- }
63- }
64-
65- return answer ;
666 }
67- }
68-
69-
7+ }
0 commit comments