
将数组排序,对三个数的第一个数进行遍历,从数组的第一个数字开始,剩下的两个数字一个从一个数字的后一个位置开始遍历,另一个数字从数组的最后一个位置开始遍历。当当前的三数之和大于target时,后面的数字往前走,当当前的三数之和小于target时,前面的数字往后走
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
l = 0
r = 0
best_sum = 0
best_dist = float('inf')
for i in range(len(nums) - 2):
l = i + 1
r = len(nums) - 1
while l < r:
tmp_sum = nums[i] + nums[l] + nums[r]
if abs(tmp_sum - target) < best_dist:
best_dist, best_sum = abs(tmp_sum - target), tmp_sum
if tmp_sum < target:
l += 1
elif tmp_sum > target:
r = r - 1
else:
return target
return best_sum
本文介绍了一种高效的算法,用于寻找数组中三个数的组合,使其之和最接近给定的目标值。通过先对数组进行排序,然后使用双指针技术遍历并调整,以找到最优解。
4634

被折叠的 条评论
为什么被折叠?



