给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
n = len(nums)
nums.sort()
result = nums[0] + nums[1] + nums[n-1]
for i in range(n-2):
if i > 0 and nums[i-1] == nums[i]:
continue
l = i + 1
r = n - 1
while l < r:
val = nums[i] + nums[l] + nums[r]
if abs(val - target) < abs(result - target):
result = val
if target == val:
return target
elif target > val:
l = l + 1
else:
r = r - 1
return result