思路类似三数之和,利用双指针
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
length=len(nums)
if length<3:
return None
nums.sort()
closest=nums[0]+nums[1]+nums[2]
for i in range(length):
j=i+1
k=length-1
while(j<k):
threesum=nums[i]+nums[j]+nums[k]
if(abs(threesum-target)<abs(closest-target)):
closest=threesum
if(threesum>target):
k-=1
elif(threesum<target):
j+=1
else:
return target
return closest