1 Star 0 Fork 0

catyMap/AlgorithmNote

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
numberOfWeeks.go 983 Bytes
一键复制 编辑 原始数据 按行查看 历史
dogemap 提交于 2021-08-04 08:23 +08:00 . 更新题库
package main
import (
"fmt"
"math"
"sort"
)
func numberOfWeeks(milestones []int) int64 {
// 1.排序 2.回溯找最近二分点
sort.Slice(milestones, func(i, j int) bool {
return milestones[i] > milestones[j]
})
n := len(milestones)
sum := 0
for _, v := range milestones {
sum += v
}
trace := 0
res := math.MaxInt32
var dfs func(idx int)
dfs = func(idx int) {
if idx > n {
return
}
if trace > sum/2 {
return
}
res = min(res, sum/2-trace)
for i := idx; i < n; i++ {
trace += milestones[i]
dfs(i + 1)
trace -= milestones[i]
}
}
dfs(0)
res = sum/2 - res
if res == int(math.Ceil(float64(sum)/2)) {
return int64(res * 2)
}
return int64(res*2) + 1
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
func main() {
//fmt.Println(numberOfWeeks([]int{1, 2, 3}))
//fmt.Println(numberOfWeeks([]int{5, 2, 1}))
//fmt.Println(numberOfWeeks([]int{9, 3, 6, 8, 2, 1}))
fmt.Println(numberOfWeeks([]int{5, 7, 5, 7, 9, 7}))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/dogemap/algorithm-note.git
git@gitee.com:dogemap/algorithm-note.git
dogemap
algorithm-note
AlgorithmNote
dc486f96f6c1

搜索帮助