Re: [閒聊] 每日leetcode已回收
補一下這兩天的每日
1482. Minimum Number of Days to Make m Bouquets
給一個array bloomDay,bloomDay[i]代表第i朵花會在幾天開花
需要做m個花束、每個花束需要k朵花
請問最少需要幾天才可以收集完?
思路:
找出bloomDay裡最大、小的天數
再用這兩個天數進行2分搜尋
看一下有沒有足夠的花束
大概就這樣
golang code :
func minDays(bloomDay []int, m int, k int) int {
n := len(bloomDay)
if n < m*k {
return -1
}
maxday := slices.Max(bloomDay)
minday := slices.Min(bloomDay)
chk := func(day int) bool {
group, cnt := 0, 0
for _, val := range bloomDay {
if val <= day {
cnt++
if cnt == k {
group++
cnt=0
}
} else {
cnt = 0
}
}
return group >= m
}
for maxday > minday {
midday := minday + (maxday-minday)/2
if chk(midday) {
maxday = midday
} else {
minday = midday + 1
}
}
return minday
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.125.91 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1718793326.A.0DD.html
推
06/19 18:53,
1年前
, 1F
06/19 18:53, 1F
討論串 (同標題文章)
完整討論串 (本文為第 383 之 1550 篇):