方法一:排序加双指针
思想:同15.三数之和
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
n = len(nums)
if n == 3:
return sum(nums)
nums.sort()
#距离的初始值
temp = abs(nums[0] + nums[1] + nums[n-1] - target)
for i in range(n):
l = i + 1
r = n - 1
while l < r:
sum1 = nums[i] + nums[l] + nums[r]
if sum1 > target:
r -= 1
elif sum1 < target:
l += 1
else:
return sum1
if abs(sum1 - target) <= temp:
temp = abs(sum1 - target)
result = sum1
return result