获得徽章 0
- #青训营 x 字节后端训练营# func maximumTastiness(price []int, k int) int {
sort.Ints(price)
left, right := 0, price[len(price)-1]-price[0]
for left < right {
mid := (left + right + 1) / 2
if check(price, k, mid) {
left = mid
} else {
right = mid - 1
}
}
return left
}
func check(price []int, k int, tastiness int) bool {
prev := int(math.Inf(-1)) >> 1
cnt := 0
for _, p := range price {
if p - prev >= tastiness {
cnt++
prev = p
}
}
return cnt >= k
}展开评论点赞 - #青训营 x 字节后端训练营# go语言每日一题
func min(a, b int) int {
if a < b {
return a
}
return b
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func mctFromLeafValues(arr []int) int {
n := len(arr)
dp, mval := make([][]int, n), make([][]int, n)
for i := 0; i < n; i++ {
dp[i] = make([]int, n)
mval[i] = make([]int, n)
}
for j := 0; j < n; j++ {
mval[j][j] = arr[j]
for i := j - 1; i >= 0; i-- {
mval[i][j] = max(arr[i], mval[i + 1][j])
dp[i][j] = 0x3f3f3f3f
for k := i; k < j; k++ {
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + mval[i][k] * mval[k + 1][j])
}
}
}
return dp[0][n - 1]
}展开评论点赞 - #青训营 x 字节后端训练营# 每日一题
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func delNodes(root *TreeNode, to_delete []int) []*TreeNode {
toDeleted:=make(map[int]bool)
for _,val:= range to_delete {
toDeleted[val]=true
}
var ans []*TreeNode
var dfs func(node *TreeNode, is_root bool) *TreeNode
dfs=func(node *TreeNode, is_root bool) *TreeNode {
if node == nil {
return nil
}
deleted:=false
if toDeleted[node.Val] {
deleted=true
}
node.Left=dfs(node.Left,deleted)
node.Right=dfs(node.Right,deleted)
if deleted {
node=nil
} else {
if is_root {
ans=append(ans, node)
}
}
return node
}
dfs(root,true)
return ans
}展开评论点赞