题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
思路:三指针法,和牛顿下降法的思路很类似,给定一个初始值,不断迭代找到符合要求的最优值
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
length = len(nums)
limit = length - 2
assume = nums[0] + nums[1] + nums[2]
for i in range(limit):
j = i + 1
t = length -1
while j < t:
result = nums[i] + nums[j] + nums[t]
if abs(target - assume) >= abs(target - result):
assume = result
else:
assume = assume
if target == result:
return result
elif target < result:
t -= 1
else:
j += 1
return assume