您的位置:首页 > 其它

leetcode: 16. 3Sum Closest

2017-11-07 23:28 309 查看

Problem

# Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target.
# Return the sum of the three integers. You may assume that each input would have exactly one solution.
#
# For example, given array S = {-1 2 1 -4}, and target = 1.
#
# The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).


AC

class Solution():
def threeSumClosest(self, x, target):
x.sort()
closest = sum(x[:3])
for left in range(len(x) - 2):
mid, right = left + 1, len(x) - 1
while mid < right:
s = x[left] + x[mid] + x[right]
if s == target:
return s
elif s < target:
mid += 1
else:
right -= 1
if abs(s - target) < abs(closest - target):
closest = s
return closest

if __name__ == '__main__':
assert Solution().threeSumClosest([-1, 2, 1, -4], 1) == 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: