anoldvozer1710.v2
Senior Member
Bài này là làm theo cái template BS của 1 idol leetcode nào đó
JavaScript:
function minDays(bloomDay: number[], m: number, k: number): number {
const feasible = (days: number) => {
let bon = 0, flow = 0;
for (const bloom of bloomDay) {
if (bloom > days) {
flow = 0
} else {
bon+= ~~((flow + 1) / k);
flow = (flow + 1) % k
}
}
return bon >= m
}
let left = 0, right = 0;
for (const bloom of bloomDay) {
if (bloom > right) {
right = bloom;
}
}
if (m * k > bloomDay.length) {
return -1;
}
while (left < right) {
const mid = left + ~~((right - left) / 2);
if (feasible(mid)) {
right = mid
} else {
left = mid + 1;
}
}
return left
};