题目描述

[EN | CN]

 1 2 3 例如，给定数组 nums = [-1，2，1，-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 

解法 1：三指针

• 时间复杂度为 $O(n^2)$；
• 空间复杂度为 $O(1)$。

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums = sorted(nums) min_diff = 10000 ret = 10000 for a in range(len(nums) - 2): b = a + 1 c = len(nums) - 1 while b < c: sum_ = nums[a] + nums[b] + nums[c] diff = sum_ - target if diff == 0: return target if abs(diff) < min_diff: min_diff = abs(diff) ret = sum_ if diff < 0: b += 1 else: c -= 1 return ret 
• 执行用时：116 ms，在所有 Python3 提交中击败了 76.89% 的用户。
• 内存消耗：13.7 MB，在所有 Python3 提交中击败了 5.05% 的用户。