FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
algorithms/array/three_sum.py at master · mindreframer/algorithms · GitHub
mindreframer
/
algorithms
Public
forked from
keon/algorithms
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
algorithms
/
array
/
three_sum.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
46 lines (39 loc) · 1.11 KB
Breadcrumbs
algorithms
/
array
/
three_sum.py
Copy path
File metadata and controls
46 lines (39 loc) · 1.11 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
38
39
40
41
42
43
44
45
46
"""
Given an array S of n integers, are there elements a, b, c in S
such that a + b + c = 0?
Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
"""
def
three_sum
(
nums
:
"List[int]"
)
->
"List[int]"
:
res
=
[]
nums
.
sort
()
for
i
in
range
(
len
(
nums
)
-
2
):
if
i
>
0
and
nums
[
i
]
==
nums
[
i
-
1
]:
continue
l
,
r
=
i
+
1
,
len
(
nums
)
-
1
while
l
<
r
:
s
=
nums
[
i
]
+
nums
[
l
]
+
nums
[
r
]
if
s
>
0
:
r
-=
1
elif
s
<
0
:
l
+=
1
else
:
# found three sum
res
.
append
((
nums
[
i
],
nums
[
l
],
nums
[
r
]))
# remove duplicates
while
l
<
r
and
nums
[
l
]
==
nums
[
l
+
1
]:
l
+=
1
while
l
<
r
and
nums
[
r
]
==
nums
[
r
-
1
]:
r
-=
1
l
+=
1
r
-=
1
return
res
if
__name__
==
"__main__"
:
x
=
[
-
1
,
0
,
1
,
2
,
-
1
,
-
4
]
print
(
three_sum
(
x
))
Back
|
FazBrowse Home
|
New Git URL