1 Star 0 Fork 0

chintensakai/leetcode-golang

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
code16.go 1.13 KB
一键复制 编辑 原始数据 按行查看 历史
chintensakai 提交于 2023-08-06 16:38 . 2023/08/06
package main
import (
"math"
"sort"
)
// 16. 最接近的三数之和
// 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
// 返回这三个数的和。
// 假定每组输入只存在恰好一个解。
func threeSumClosest(nums []int, target int) int {
sort.Ints(nums)
ans := 0 // 题目设定是有解的,所以初始值不重要
diff := math.MaxInt32 // int32,而不是int
for i := 0; i < len(nums)-2; i++ {
//for i != 0 && nums[i] == nums[i-1] { // 只有一个解,其实不需要去重
// i++
//}
start := i + 1
end := len(nums) - 1
for start < end {
sum := nums[i] + nums[start] + nums[end]
if abs(sum-target) < diff {
diff = abs(sum - target)
ans = sum
}
if sum == target {
return ans
} else if sum > target { // 题目设定只有一个解,所以就不需要像15题那样去重了
end--
} else {
start++
}
}
}
return ans
}
func abs(a int) int {
if a > 0 {
return a
}
return -a
}
// 三数之和变种题,判断三数之和和target之差,即可
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/chintensakai/leetcode-golang.git
git@gitee.com:chintensakai/leetcode-golang.git
chintensakai
leetcode-golang
leetcode-golang
main

搜索帮助