题目说明

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近,返回这三个数的和。

输入:nums = [-1,2,1,-4], target = 1

输出:2

解释:与 target 最接近的和是 2 (-1 2 1 = 2)

解题思路

""" 同三数之和类似,也是先排序,然后遍历列表,根据左右指针计算值; 最接近三数字和需要与target进行比较,使用绝对值进行比较,然后进行移动指针 1. 列表排序,for循环遍历列表: 2. 定义左右指针,while循环,计算三数之和并重新赋值,根据结果移动左右指针 3. 和大于目标值,右指针左移动 -1; 4. 和小于目标值,左指针移动 1; """

代码如下

人生苦短, 我用python, 算法学习, 点滴开始

from typing import List class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums.sort() len_nums = len(nums) base = 10 ** 5 for i in range(len_nums): if i > 0 and nums[i] == nums[i-1]: continue l, r = i 1, len_nums - 1 # 定义左右双指针 while l < r: count = nums[i] nums[l] nums[r] if count == target: return count if abs(count - target) < abs(base - target): # 绝对值判断三数之和与目标值 base = count if count > target: r -= 1 while l < r and nums[r] == nums[r 1]: r -= 1 else: l = 1 while l < r and nums[l] == nums[l-1]: l = 1 return base

总结

leetcode算法思路分析(LeetCode-最接近的三数之和)(1)

#程序员##每日一题##新手小白求过百粉#

,