1482. 制作 m 束花所需的最少天数
难度中等96收藏分享切换为英文接收动态反馈
给你一个整数数组 bloomDay
,以及两个整数 m
和 k
。
现需要制作 m
束花。制作花束时,需要使用花园中 相邻的 k
朵花 。
花园中有 n
朵花,第 i
朵花会在 bloomDay[i]
时盛开,恰好 可以用于 一束 花中。
请你返回从花园中摘 m
束花需要等待的最少的天数。如果不能摘到 m
束花则返回 -1 。
示例 1:
1 | 输入:bloomDay = [1,10,3,10,2], m = 3, k = 1 |
示例 2:
1 | 输入:bloomDay = [1,10,3,10,2], m = 3, k = 2 |
示例 3:
1 | 输入:bloomDay = [7,7,7,7,12,7,7], m = 2, k = 3 |
示例 4:
1 | 输入:bloomDay = [1000000000,1000000000], m = 1, k = 1 |
示例 5:
1 | 输入:bloomDay = [1,10,2,9,3,8,4,7,5,6], m = 4, k = 2 |
提示:
bloomDay.length == n
1 <= n <= 10^5
1 <= bloomDay[i] <= 10^9
1 <= m <= 10^6
1 <= k <= n
二分答案
使用二分查找方法查找所需的天数,如果mid
天可以生成m
束花那么可以减小这个天数,如果mid
天不可以生成m
束花那么需要增大这个天数,直至有一天能生成m
束花,且m-1
天不可以生成m
束花。
1 | class Solution { |