一级标题

行内代码

import os

def fun():
  return "python"
class Solution {
public:
    int minDays(vector<int>& bloomDay, int m, int k) {
        const int n = bloomDay.size();
        if (m * k > n) return -1;

        vector<bool> flag(n);
        int l = 0, r = *max_element(bloomDay.begin(), bloomDay.end());
        while(l < r) {
            int mid = (l + r) / 2;
            if (check(bloomDay, mid, flag, m, k)) {
                r = mid;
            } else {
                l = mid + 1;
            }
        }

        // 如果二分终点值r都不合法,就找不到合法答案
        return check(bloomDay, r, flag, m, k) ? r : -1;
    }

    bool check(vector<int>& bld, int mid, vector<bool>& f, int m, int k) {
        int n = bld.size();

        // 初始化flag数组
        // 标记已经盛开的花朵
        for (int i = 0; i < n; i++) {
            f[i] = bld[i] <= mid;
        }

        // O(n)枚举
        int cnt = 0;
        for (int i = 0; i < n && cnt < m; ) {
            // 如果花朵i已经盛开
            if (f[i]) {
                int cur = 1, j = i;
                // 去枚举相邻的k朵花是不是也盛开了
                while (cur < k && j + 1 < n && f[j + 1]) {
                    j++;
                    cur++;
                }
                // 如果都盛开了,计数++
                if (cur == k) cnt++;
                // 从这相邻的一组花再后一个位置继续枚举
                i = j + 1;
            } else {
                // 如果没开就直接跳
                i++;
            }
        }

        return cnt >= m;
    }
};

行内代码

import os

def fun():
    return "python"
select * from sutdent
where student.`name` = 'edison'