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)