16. 最接近的三数之和
解法一:双指针
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
minDist = sys.maxsize
i = 0
while i < len(nums):
front, back = i+1, len(nums)-1
while front < back:
sum = nums[i] + nums[front] + nums[back]
if abs(sum - target) < abs(minDist): #更新
minDist = sum - target
if sum < target:
front += 1
elif sum > target:
back -= 1
else: #刚好等于,直接返回
return sum
while i+1 < len(nums) and nums[i] == nums[i+1]:
i += 1 #跳过相同的元素(不知道为啥能跳
i += 1
return target + minDist最后更新于