本题和上一题寻找三数之和为零相似。不过这题是找三个数之和以接近给定数值。
解题:和上一题一样,先定下一个数再找另外两数,不过这次需要计算和的同时计算与给定数值的差的绝对值,最后返回的是那个差绝对值最小的和值。
代码:
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
res=nums[0]+nums[1]+nums[2]
dif=abs(res-target)
l=len(nums)
for i in range(l-2):
left,right=i+1,l-1
while right>left:
summ=nums[i]+nums[left]+nums[right]
if abs(summ-target)<dif:
res=summ
dif=abs(summ-target)
if summ<target:
left+=1
else:
right-=1
return res