力扣2517.礼盒的最大甜蜜度
二分答案求最小值
- 排完序判断是否有k个差距至少为mid的元素
- 别用i遍历 可能会越界 用 : 有多少取多少
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; } };