File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-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
+ # Naive Solution
4
+ # Tc : O(n^3) / Sc : O(nC_3)
5
+
6
+ n = len (nums )
7
+ """
8
+ for i in range(n-2):
9
+ for j in range(i+1,n-1):
10
+ for k in range(j+1, n):
11
+ if nums[i]+nums[j]+nums[k] == 0:
12
+ ret.add(tuple(sorted([nums[i], nums[j], nums[k]])))
13
+
14
+ ret = [x for x in ret]
15
+ return ret
16
+ """
17
+
18
+ # Better Solution
19
+ # two-sum question with fixed num (traversal in for loop)
20
+ # Tc : O(n^2) / Sc : O(n)
21
+ ret = []
22
+ nums .sort ()
23
+
24
+ for i in range (n ):
25
+ if i > 0 and nums [i ] == nums [i - 1 ]:
26
+ continue
27
+ j , k = i + 1 , n - 1
28
+
29
+ while j < k :
30
+ sum_ = nums [i ] + nums [j ] + nums [k ]
31
+ if sum_ < 0 : j += 1
32
+ elif sum_ > 0 : k -= 1
33
+ else :
34
+ ret .append ([nums [i ], nums [j ], nums [k ]])
35
+ j += 1
36
+
37
+ while nums [j ] == nums [j - 1 ] and j < k :
38
+ j += 1
39
+
40
+ return ret
41
+
You can’t perform that action at this time.
0 commit comments