init commit
This commit is contained in:
41
archive/algorithm/leetcode/16.go
Normal file
41
archive/algorithm/leetcode/16.go
Normal file
@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func threeSumClosest(nums []int, target int) int {
|
||||
min := int(^uint(0) >> 1)
|
||||
minAbs := min
|
||||
numLen := len(nums)
|
||||
sort.Slice(nums, func(i, j int) bool {
|
||||
return nums[i] < nums[j]
|
||||
})
|
||||
for i := 0; i < numLen-2; i++ {
|
||||
left, right := i+1, numLen-1
|
||||
for left < right {
|
||||
tmp := nums[i] + nums[left] + nums[right]
|
||||
tmpAbs := target - tmp
|
||||
if tmpAbs < 0 {
|
||||
tmpAbs = -tmpAbs
|
||||
}
|
||||
if tmp < target {
|
||||
left++
|
||||
} else {
|
||||
right--
|
||||
}
|
||||
if tmpAbs < minAbs {
|
||||
min = tmp
|
||||
minAbs = tmpAbs
|
||||
}
|
||||
}
|
||||
}
|
||||
return min
|
||||
}
|
||||
|
||||
func main() {
|
||||
println(threeSumClosest([]int{1, 2, 4, 8, 16, 32, 64, 128}, 82))
|
||||
}
|
||||
|
||||
// [1,2,3,4,5,6,7,8,9]
|
||||
// [-1,2,1,-4]
|
Reference in New Issue
Block a user