给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
    返回这三个数的和。
    假定每组输入只存在恰好一个解。
    示例 1:

    输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

    示例2:

    输入:nums = [0,0,0], target = 1 输出:0

    1. class Solution:
    2. def threeSumClosest(self, nums: List[int], target: int) -> int:
    3. # 这种选若干个数组成和的问题,第一步是排序
    4. nums.sort()
    5. n=len(nums)
    6. ans=nums[0]+nums[1]+nums[2]
    7. # 固定第一个数
    8. for first in range(n):
    9. # 跳过重复值
    10. if first>0 and nums[first]==nums[first-1]:continue
    11. second=first+1
    12. third=n-1
    13. # 双指针从两边遍历
    14. while second<third:
    15. tol=nums[first]+nums[second]+nums[third]
    16. if tol==target:
    17. return tol
    18. elif tol<target:
    19. second+=1
    20. else:
    21. third-=1
    22. # 目标值与当前和之差较大的话就不更新ans
    23. ans=ans if abs(target-tol)>abs(target-ans) else tol
    24. return ans