给定一个包括 n 个整数的数组 nums
和 一个目标值 target
。找出 nums
中的三个整数,使得它们的和与 target
最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
class Solution:
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
n=len(nums)
gap=0x10fff
res=0
nums.sort()
for i in range(n-2):
left=i+1
right=n-1
while(left<right):
closetarget=nums[i]+nums[left]+nums[right]
if(closetarget==target):
res=target
break
elif(abs(closetarget-target)<gap):
gap=abs(closetarget-target)
res=closetarget
if(closetarget<target):
left=left+1
else:
right=right-1
if(res==target):
break
return res