一级标题
行内代码
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'
评论
还没有任何评论,你来说两句吧!