354. Minimum days to make M bouquets

Given n roses and an array nums where nums[i] denotes that the 'ith' rose will bloom on the nums[i]th day, only adjacent bloomed roses can be picked to make a bouquet. Exactly k adjacent bloomed roses are required to make a single bouquet. Find the minimum number of days required to make at least m bouquets, each containing k roses. Return -1 if it is not possible.

Example 1:

Input: n = 8, nums = [7, 7, 7, 7, 13, 11, 12, 7], m = 2, k = 3

Output: 12

Explanation: On the 12th the first 4 flowers and the last 3 flowers would have already bloomed. So, we can easily make 2 bouquets, one with the first 3 and another with the last 3 flowers.

Example 2:

Input: n = 5, nums = [1, 10, 3, 10, 2], m = 3, k = 2

Output: -1

Explanation: If we want to make 3 bouquets of 2 flowers each, we need at least 6 flowers. But we are given only 5 flowers, so, we cannot make the bouquets.

Now Your Turn!

Pick the correct output for the given input

Input: n = 5, nums = [1, 10, 3, 10, 2], m = 3, k = 1

Still unsure what the problem is asking ?

Let’s go through a few more examples, step by step, to make it clearer.

Constraints:

  •  1 <= n <= 105
  •  1 <= nums[i] <= 109
  •  1 <= m <= 106
  •  1 <= k <= n

Hints

Frequently Occurring Doubts

Interview Follow-up Questions

0
class Solution {
public:
int roseGarden(int n,vector<int> nums, int k, int m) {
}
};
Test Case

Input:

K
M
Nums