classSolution:defthreeSumClosest(self, nums: List[int], target:int)->int:
nums.sort()# 首先考虑[1,1,1,1,1],1这种情况if nums[0]== nums[-1]:return nums[0]*3
res =0
diff =float('inf')# [-1,2,1,-4],1for i inrange(len(nums)):
start = i +1
end =len(nums)-1while start < end:
ans = nums[i]+ nums[start]+ nums[end]if ans == target:return target
if ans > target:ifabs(target-ans)<diff:
diff =abs(target-ans)
res = ans
end -=1else:ifabs(target-ans)<diff:
diff =abs(target-ans)
res = ans
start +=1return res
if __name__ =='__main__':###################
s = Solution()
res = s.threeSumClosest([1,1,1,0],-100)print(res)# 2