描述
给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。
只需要返回三元组之和,无需返回三元组本身
您在真实的面试中是否遇到过这个题? 是
样例
例如 S = [-1, 2, 1, -4]
and target = 1
. 和最接近 1 的三元组是 -1 + 2 + 1 = 2.
挑战
O(n^2) 时间, O(1) 额外空间。
实现代码:
class Solution:
"""
@param numbers: Give an array numbers of n integer
@param target: An integer
@return: return the sum of the three integers, the sum closest target.
"""
def threeSumClosest(self, numbers, target):
# write your code here
numbers.sort()
ans = None
for i in range(len(numbers)):
l, r = i+1, len(numbers)-1
while l < r:
sum = numbers[l] + numbers[r] + numbers[i]
#既然离得最近了,那么和也应该是最小的
if ans is None or abs(sum-target) < abs(ans-target):
ans = sum
if sum <= target:
l+=1
else:
r=r-1
return ans