File tree Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
3+ nums .sort ()
4+ res = []
5+ n = len (nums )
6+
7+ for i in range (n ):
8+ if i > 0 and nums [i ] == nums [i - 1 ]:
9+ continue
10+
11+ target = - nums [i ]
12+ seen = set ()
13+ j = i + 1
14+
15+ while j < n :
16+ complement = target - nums [j ]
17+ if complement in seen :
18+ res .append ([nums [i ], complement , nums [j ]])
19+ while j + 1 < n and nums [j ] == nums [j + 1 ]:
20+ j += 1
21+ seen .add (nums [j ])
22+ j += 1
23+ return list (set (tuple (x ) for x in res ))
24+
25+
26+ class Solution :
27+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
28+ nums .sort ()
29+ result = []
30+
31+ for i in range (len (nums )):
32+ # 중복된 첫 번째 수는 skip
33+ if i > 0 and nums [i ] == nums [i - 1 ]:
34+ continue
35+
36+ left , right = i + 1 , len (nums ) - 1
37+
38+ while left < right :
39+ total = nums [i ] + nums [left ] + nums [right ]
40+
41+ if total == 0 :
42+ result .append ([nums [i ], nums [left ], nums [right ]])
43+
44+ # 중복된 두 번째, 세 번째 수 건너뛰기
45+ while left < right and nums [left ] == nums [left + 1 ]:
46+ left += 1
47+ while left < right and nums [right ] == nums [right - 1 ]:
48+ right -= 1
49+
50+ left += 1
51+ right -= 1
52+
53+ elif total < 0 :
54+ left += 1 # 합이 작으면 왼쪽을 오른쪽으로
55+ else :
56+ right -= 1 # 합이 크면 오른쪽을 왼쪽으로
57+
58+ return result
You can’t perform that action at this time.
0 commit comments