可惜就弄到了168 ms 64%:
思路:先排序。i, j, k 分别代表相加的三个数。
i 开始循环, j 和 k 分别从 i+1 的位置和nums尾部互相靠拢(如果大于target:k-- ; 否则,j++)
class Solution:
def threeSumClosest(self, nums, target):
nums.sort()
min_close = None
for i in range(len(nums)):
j = i + 1
k = len(nums) - 1
while j < k:
sum_num = nums[i] + nums[j] + nums[k]
if min_close == None or abs(sum_num - target) < abs(min_close - target):
min_close = sum_num
if sum_num == target:
return sum_num
elif sum_num < target:
j += 1
else:
k -= 1
return min_close