这个题和之前的三数之和的题目一样的思路,先排序然后再双指针遍历;
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
n = len(nums)
if n == 3: return sum(nums)
result = nums[0] + nums[1] +nums[2]
min_diff = abs(nums[0] + nums[1] + nums[2] - target)
for i in range(n):
j = i+1
k = n-1
while(j < k):
diff = nums[j] + nums[k] +nums[i] - target
abs_diff = abs(diff)
if abs_diff < min_diff:
min_diff = abs_diff
result = diff + target
if diff == 0:
return result
elif diff < 0:
j+=1
else:
k-=1
return result