https://oj.leetcode.com/problems/3sum/
class Solution:
# @return a list of lists of length 3, [[val1,val2,val3]]
def threeSum(self, num):
num.sort()
lst = []
n = len(num)
for i in range(n - 2):
if i > 0 and num[i] == num[i - 1]:
continue
j, k = i + 1, n - 1
while j < k:
if j > i + 1 and num[j] == num[j - 1]:
j += 1
elif num[i] + num[j] + num[k] == 0:
lst.append([num[i], num[j], num[k]])
j += 1
k -= 1
elif num[i] + num[j] + num[k] < 0:
j += 1
else:
k -= 1
return lst