给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
依然是双指针迭代,注意返回的是和,不是绝对值的差值
n=sorted(nums)
le=len(n)
cha=abs(n[0]+n[1]+n[-1]-target)
msum=n[0]+n[1]+n[-1]
for l in range(le-2):
m=l+1
r=le-1
while m<r:
su=n[l]+n[m]+n[r]
if abs(su-target) ==0:#可优化4倍
return su
if abs(su-target) <cha:#更新最小和
cha=min(cha,abs(su-target))
msum=su
if su>target:
r-=1
else:
m+=1
return msum
116ms,排名49%