最接近的三数之和,给定一个包含n个整数的数组nums,和target 判断nums中存在三个元素,abc ,之和最接近target
返回这三个数的和
nums=[-1,2,1,4],target=1
class Soution:
def Near(self, nums, target):
nums.sort()
# 初始值-前三个都大于等于target了,后面肯定更大,
res = nums[0] + nums[1] + nums[2]
if res >= target:
return res
else:
for i in range(len(nums)):
left = i + 1
right = len(nums) - 1
while left < right:
sumnum = nums[i] + nums[left] + nums[right]
if abs(res - target) > abs(sumnum - target): # 绝对值大,就是距离远,替换为距离更近的
res = sumnum
if sumnum > target: #太大了,右边减小
right -= 1
elif sumnum < target:#太小了,左边加大
left += 1
elif sumnum == target: #相等的话,直接返回
return res
return res