力扣十六 最接近的三数之和
庆祝自己第一次达到百分之95以上
执行用时:4 ms, 在所有 Go 提交中击败了95.59%的用户
内存消耗:2.7 MB, 在所有 Go 提交中击败了98.89%的用户
题目描述
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
示例:
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
提示:
3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
*-10^4 <= target <= 10^4
思路
和第十五题类似,先排序,后用对撞指针对后面的数字进行扫描,只需注意一点return的是sum的值,min却是target-sum
代码:
func threeSumClosest(nums []int, target int) int {
//先排序
min:=999999
var value int
sort.Ints(nums)
length:=len(nums)
//确认好一个数之后用对撞指针
for k:=0;k<length-2;k++{
left:=k+1
right:=length-1
for left<right{
sum := nums[left]+nums[right]+nums[k]
if(sum==target){
return sum
}else if(sum<target){
if(target-sum<min){
min=target-sum
value=sum //这里要注意,return的是sum的值,min却是target-sum
}
left++
}else{
if(sum-target<min){
min=sum-target
value=sum
}
right--
}
}
}
return value
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!