• 题目要求:

  • 思路:

    • 把数组排序,遍历数组,遍历时用双指针寻找当前元素后面的所有元素中,与当前元素和最接近目标值target的两个元素,把三数之和作为res返回
  • 核心代码:
# 把数组排序nums.sort()# 结果初始化为数组的前三个元素之和res = nums[0] + nums[1] + nums[2]# 遍历数组for i in range(len(nums)-2):    left = i + 1    right = len(nums) - 1    while left < right:        tmp = nums[i] + nums[left] + nums[right]        # 如果当前的三个元素之和更接近目标值,把当前的三个元素之和赋给结果res        if abs(tmp - target) < abs(res - target):            res = tmp        if tmp < target:            left += 1        else:            right -= 1return res
  • 完整代码:
class Solution:    def threeSumClosest(self, nums: List[int], target: int) -> int:        if len(nums) < 3:            return 0        nums.sort()        res = nums[0] + nums[1] + nums[2]        for i in range(len(nums)-2):            left = i + 1            right = len(nums) - 1            while left < right:                tmp = nums[i] + nums[left] + nums[right]                if abs(tmp - target) < abs(res - target):                    res = tmp                if tmp < target:                    left += 1                else:                    right -= 1        return res