- Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy path3sum.py
More file actions
Latest commit
37 lines (34 loc) · 1.26 KB
/
Copy path3sum.py
File metadata and controls
37 lines (34 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# coding: utf-8
classSolution:
"""
@param numbersbers : Give an array numbersbers of n integer
@return : Find all unique triplets in the array which gives the sum of zero.
"""
defthreeSum(self, numbers):
# write your code here
self.ret= []
numbers.sort() # 排序后搜索,重点是去重!
foriinxrange(len(numbers)):
ifi>0: # 第一个元素已经用过必需跳过
ifnumbers[i] ==numbers[i-1]:
continue
self.twoSum(numbers, -numbers[i], i+1, len(numbers) -1)
returnself.ret
deftwoSum(self, numbers, target, start, end):
whilestart<end:
x, y=numbers[start], numbers[end]
if (x+y) ==target:
self.ret.append([-target, x, y])
start+=1
end-=1
# 跳过重复元素
while (start<end) and (numbers[start] ==x):
start+=1
while (start<end) and (numbers[end] ==y):
end-=1
elif (x+y) <target:
start+=1
else:
end-=1
returnret
# medium: http://lintcode.com/zh-cn/problem/3sum/