【id】#16
【title】 3Sum Cloest
【description】
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
【idea】
同上,找两个指针,设一个diff记录差值。从数组首部找一个固定数,该数之后的数组首尾设置两个指针,计算固定数+两个指针的总和。如果差值小于初始化的diff,更新总和。如果总和小于target,low+1,否则high-1
【code】
class Solution:
def threeSumClosest(self, nums, target):
nums = sorted(nums)
res = nums[0] + nums[1]+ nums[2]
min_diff = abs(res - target)
length = len(nums)
for i in range(length):
low = i+1
high = length-1
while high >low:
s = nums[i] + nums[low] + nums[high]
diff = abs(s - target)
if diff < min_diff :
min_diff = diff
res = s
if s < target: low +=1
else: high -= 1
return res