File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ ///정수 배열 nums가 주어졌을 때,세 수의 합이 0이 되는 모든 삼중 조합 [nums[i], nums[j], nums[k]]을 반환하세요.
2+ ///i, j, k 모두 다른 인덱스, 같은 조합의 결과는 하나로 취급
3+
4+ class Solution {
5+ func threeSum( _ nums: [ Int ] ) -> [ [ Int ] ] {
6+ let sorted = nums. sorted ( )
7+ var result = [ [ Int] ] ( )
8+
9+ for i in 0 ..< sorted. count {
10+ // 중복 값 스킵
11+ if i > 0 && sorted [ i] == sorted [ i - 1 ] {
12+ continue
13+ }
14+
15+ //포인터 설정
16+ var left = i + 1
17+ var right = sorted. count - 1
18+
19+ //두 포인터가 만나기 전까지만
20+ while left < right {
21+ let sum = sorted [ i] + sorted[ left] + sorted[ right]
22+
23+ if sum == 0 {
24+ result. append ( [ sorted [ i] , sorted [ left] , sorted [ right] ] )
25+
26+ // 같은 left/right 값 스킵
27+ while left < right && sorted [ left] == sorted [ left + 1 ] {
28+ left += 1
29+ }
30+ while left < right && sorted [ right] == sorted [ right - 1 ] {
31+ right -= 1
32+ }
33+
34+ left += 1
35+ right -= 1
36+
37+ } else if sum < 0 {
38+ left += 1
39+ } else {
40+ right -= 1
41+ }
42+ }
43+ }
44+
45+ return result
46+ }
47+ }
You can’t perform that action at this time.
0 commit comments