../ Competitive Programming
-rw-r--r--aguang1.0 KiB1 min read

Leet Code 2024-06-19 - Minimum Number of Days to Make m Bouquets

Solution

Binary search.

Code

c++
class Solution {
public:
    int cntBouquets(vector<int>& bloomDay, int day, int k) {
        int ret = 0, cnt = 0;
        for (const auto& x : bloomDay) {
            if (x > day) {
                cnt = 0;
                continue;
            }
            if (++cnt >= k) {
                ret++;
                cnt = 0;
            }
        }
        return ret;
    }

    int minDays(vector<int>& bloomDay, int m, int k) {
        int low = 0, high = *max_element(bloomDay.begin(), bloomDay.end());
        if (cntBouquets(bloomDay, high, k) < m) {
            return -1;
        }
        while (low < high) {
            int mid = (low + high) / 2;
            if (cntBouquets(bloomDay, mid, k) >= m) {
                high = mid;
            } else {
                low = mid + 1;
            }
        }
        return low;
    }
};

COMMAND INTERFACE

↑ ↓ navigate · Enter execute · Esc exit · try “whoami”

Loading filesystem…

:help aguang.xyz

A personal website disguised as an operating system.

Ctrl / Cmd + K
Command palette + full-text search
Tab / Shift + Tab
Move between links and controls
Enter
Open a focused link or search result
↑ / ↓ in search
Navigate search results
In a directory filter
Enter/Done or ↓ focuses a result; Esc clears the filter
Esc
Clear a search or close a window