Skip to content

Commit bb5f19b

Browse files
committed
Update 3sum-closest.py
1 parent bfadd3e commit bb5f19b

1 file changed

Lines changed: 19 additions & 16 deletions

File tree

Python/3sum-closest.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,29 @@
1111
# The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
1212
#
1313

14-
class Solution:
15-
# @return an integer
14+
class Solution(object):
1615
def threeSumClosest(self, nums, target):
16+
"""
17+
:type nums: List[int]
18+
:type target: int
19+
:rtype: int
20+
"""
1721
nums, result, min_diff, i = sorted(nums), float("inf"), float("inf"), 0
1822
while i < len(nums) - 2:
19-
j, k = i + 1, len(nums) - 1
20-
while j < k:
21-
diff = nums[i] + nums[j] + nums[k] - target
22-
if abs(diff) < min_diff:
23-
min_diff = abs(diff)
24-
result = nums[i] + nums[j] + nums[k]
25-
if diff < 0:
26-
j += 1
27-
elif diff > 0:
28-
k -= 1
29-
else:
30-
return target
23+
if i == 0 or nums[i] != nums[i - 1]:
24+
j, k = i + 1, len(nums) - 1
25+
while j < k:
26+
diff = nums[i] + nums[j] + nums[k] - target
27+
if abs(diff) < min_diff:
28+
min_diff = abs(diff)
29+
result = nums[i] + nums[j] + nums[k]
30+
if diff < 0:
31+
j += 1
32+
elif diff > 0:
33+
k -= 1
34+
else:
35+
return target
3136
i += 1
32-
while i < len(nums) - 2 and nums[i] == nums[i - 1]:
33-
i += 1
3437
return result
3538

3639
if __name__ == '__main__':

0 commit comments

Comments
 (0)