题目描述:
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
答题思路:
1)对数组进行排序
2)设置一个总循环,循环变量设为i
3)设置左右指针,分别从i+1和最后的元素开始进行遍历
4)得到结果
具体程序如下:
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
lens=len(nums)
nums.sort()
m=nums[lens-1]+nums[lens-2]+nums[lens-3]
n=nums[0]+nums[1]+nums[2]
for i in range(lens):
L=i+1
R=lens-1
if i>0 and nums[i-1]==nums[i]:
i+=1
continue
while L<R:
a=nums[i]+nums[L]+nums[R]
if a==target:
return a
elif a>target:
if a<=m:
m=a
R-=1
else:
if a>=n:
n=a
L+=1
if (target-n)>(m-target):
return m
else :
return n
程序运行参数如下:
来源:CSDN
作者:小铭的程序之旅
链接:https://blog.csdn.net/weixin_45738641/article/details/104683601