力扣2517.礼盒的最大甜蜜度
-
二分答案求最小值
- 排完序判断是否有k个差距至少为mid的元素
- 别用i遍历 可能会越界 用 : 有多少取多少
cpp
class Solution {
public:
int maximumTastiness(vector<int>& price, int k) {
ranges::sort(price);
auto check = [&](int mid) -> bool
{
int res=1,pre = price[0];
for(auto p : price)
{
if(p >= pre + mid)
{
pre = p;
res++;
}
}
return res >= k;
};
int l = 0,r = ranges::max(price);
while(l<r)
{
int mid = l + r + 1>> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
};