给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。
样例
例1:
输入:[2,7,11,15],3
输出:20
解释:
2+7+11=20
例2:
输入:[-1,2,1,-4],1
输出:2
解释:
-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
res = []
d = []
numbers.sort()
for i in range(len(numbers)):
if i == 0:
d.append([numbers[i]])
else:
for j in range(len(d)):
a = d[j] + [numbers[i]]
d.append(d[j] + [numbers[i]])
if a not in res and len(a) == 3:
res.append(a)
d.append([numbers[i]])
p = 2**32
r = 0for z in res:
if abs(sum(z) - target) < p:
p = abs(sum(z) - target)
r = sum(z)
return r