本文主要是介绍[LeetCode] 16. 3Sum Closest,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目内容
https://leetcode-cn.com/problems/3sum-closest/
给定一个包括 n 个整数的数组 nums
和 一个目标值 target
。找出 nums
中的三个整数,使得它们的和与 target
最接近。返回这三个数的和。假定每组输入只存在唯一答案。
题目思路
我用的暴力破解法。先把数组排序好,然后开始定位。先定位好两个数,然后来看第三个数。因为是升序排列,所以如果三个数的和小于目标,那就替换,然后往后遍历。如果大于这个时候看是否差值小于之前的,如果小于就替换。最后如果相等就直接输出即可。
程序代码
class Solution:def threeSumClosest(self, nums: [int], target: int) -> int:nums.sort()n = len(nums)minDif = sys.maxsizefor i in range(n-2):if i>1 and nums[i-1]==nums[i]: continuelow, high, target_2sum = i+1, n-1, target-nums[i]while True:if low>=high: breaktempDif = nums[low] + nums[high] - target_2sumif abs(tempDif) < minDif:minDif = abs(tempDif)bestSum = nums[i]+nums[low]+nums[high]if tempDif>0: high-=1elif tempDif==0: return bestSumelif tempDif<0: low+=1return bestSum
这篇关于[LeetCode] 16. 3Sum Closest的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!