代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"sort"
)
func shipWithinDays(weights []int, D int) int {
// 1.找到左右边界值
left , right := 0 , 0
for _ ,v := range weights {
if left < v {
left = v
}
right += v
}
// 2.写出不符合条件时的函数
return left + sort.Search(right - left , func(x int) bool {
// += left的原因是因为要在weights里找,不加left就直接跑出weight的边界了
x += left
sum ,days := 0 , 0
for i := 0 ; i < len(weights) ; i++ {
sum += weights[i]
if i + 1 >= len(weights) || sum + weights[i+1] > x {
days ++
sum = 0
}
}
return days <= D
})
}
func main() {
weights := []int{214,376,385,64,203,394,117,305,297,253,110,470,340,388,482,182,341,43,184,314,265,418,332,111,18,263,4,243}
D := 14
fmt.Println(shipWithinDays(weights ,D))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。