Open Tcdian opened 4 years ago
/**
* @param {number[]} bloomDay
* @param {number} m
* @param {number} k
* @return {number}
*/
var minDays = function(bloomDay, m, k) {
if (bloomDay.length < m * k) {
return -1;
}
let left = 0;
let right = 10**9;
while(left < right) {
const mid = (left + right) >> 1;
let bouquets = 0;
let flowers = 0;
for (let i = 0; i < bloomDay.length; i++) {
if (bloomDay[i] <= mid) {
flowers += 1;
} else {
flowers = 0;
}
if (flowers === k) {
bouquets += 1;
flowers = 0;
}
}
if (bouquets < m) {
left = mid+1;
} else {
right = mid;
}
}
return left;
};
function minDays(bloomDay: number[], m: number, k: number): number {
if (bloomDay.length < m * k) {
return -1;
}
let left = 0;
let right = 10**9;
while(left < right) {
const mid = (left + right) >> 1;
let bouquets = 0;
let flowers = 0;
for (let i = 0; i < bloomDay.length; i++) {
if (bloomDay[i] <= mid) {
flowers += 1;
} else {
flowers = 0;
}
if (flowers === k) {
bouquets += 1;
flowers = 0;
}
}
if (bouquets < m) {
left = mid+1;
} else {
right = mid;
}
}
return left;
};
1482. Minimum Number of Days to Make m Bouquets
给你一个整数数组
bloomDay
,以及两个整数m
和k
。现需要制作
m
束花。制作花束时,需要使用花园中 相邻的k
朵花 。花园中有
n
朵花,第i
朵花会在bloomDay[i]
时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘
m
束花需要等待的最少的天数。如果不能摘到m
束花则返回-1
。Example 1
Example 2
Example 3
Example 4
Example 5
Note
bloomDay.length == n
1 <= n <= 10^5
1 <= bloomDay[i] <= 10^9
1 <= m <= 10^6
1 <= k <= n