Minimum Number of Days to Make m Bouquets LeetCode solution in C++

1
class Solution {
2
public:
3
bool check(int mid, vector<int> &v, int m, int k) {
4
int n = v.size();
5
int cnt = 0; // taking cnt for the no of k adjacent bouquets possible
6
for (int i = 0; i < v.size(); i++) {
7
if (v[i] <= mid) {
8
int c = 0;
9
while (i < n and v[i] <= mid) {
10
i++;
11
c++; // c->checking for adjacent count
12
}
13
cnt += c / k;
14
}
15
}
16
if (cnt >= m) return true;
17
return false;
18
}
19
int minDays(vector<int> &bloomDay, int m, int k) {
20
int s = *min_element(bloomDay.begin(), bloomDay.end());
21
int e = *max_element(bloomDay.begin(), bloomDay.end());
22
int ans = e;
23
if ((m * k) > bloomDay.size()) return -1;
24
while (s <= e) {
25
int mid = s + (e - s) / 2;
26
if (check(mid, bloomDay, m, k)) {
27
ans = mid;
28
e = mid - 1;
29
} else
30
s = mid + 1;
31
}
32
return ans;
33
}
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0