Archived
three sum
An old note — I haven't updated it since I wrote it.
1class Solution:
2 def threeSum(self, A):
3 def two_sum(n, i):
4 L, R = 0, len(A)-1
5 results = []
6 while L < R and R >= 0 and L < len(A):
7 if A[L] + A[R] == n and R != L and i not in [R, L]:
8 results.append([A[L], A[R]])
9 L, R = L+1, R-1
10 elif A[L] + A[R] > n: # dec R
11 R-= 1
12 else:
13 L+= 1
14 return results
15
16 A.sort()
17 r = set()
18 checked = {}
19 for i, num in enumerate(A):
20 res = two_sum(-num,i)
21 for pair in res:
22 pair.append(num)
23 pair.sort()
24 pair = tuple(pair)
25 if pair not in r:
26 r.add(pair) # adding the number back in
27 return list(r)