1.题目
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
返回这三个数的和。
假定每组输入只存在恰好一个解。
示例 1:
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
解题思路:1.排序数组
2.判断数字三个相加是否等于目标值
3.循环三个数相加,找出最小的值
代码如下:
class Solution:
def threeSumClosest(self, nums: list[int], target: int) -> int:
# 定义一个数组的长度
n = len(nums)
res = 3000
# 1 排除特殊,当数组为空或者长度小于3时,return res
if (not nums or len(nums) < 3):
return res
# 2 对nums进行从小到大排序
nums.sort()
# 3 当全为0时,0即是最为接近的 无论等不等于target
if (len(set(nums)) == 1 and nums[0] == 0):
return nums[0]
# 4 当不为0,可全部都为同一个数字时,判断此数字三个相加是否等于目标值(target)
# 如果不等于,则返回三个同一数字的和