leetcode 5111 Divide Chocolate

https://leetcode-cn.com/problems/divide-chocolate/

将求解问题改为判定问题。对于一个大小为val的数组和。判断可不可以将数组分为k+1组(其中最小的给第一个人即可)。每一组的之和都大于val。如果可以,说明比val小的都可以,就去尝试更大的val。二分val,对每个val判定即可。

class Solution {
public:
    int maximizeSweetness(vector<int>& s, int K) {
        int l = 0, r = 1e9 / (K + 1);
        while(l < r)
        {
            int mid = l + r + 1 >> 1;
            //cout << l << " " << r << endl;
            int cur = 0, cnt = 0;
            for(auto i : s)
            {
                cur += i;
                if(cur >= mid)
                {
                    cur = 0;
                    cnt++;
                    if(cnt > K) break;
                }
            }
            if(cnt > K)
                l = mid;
            else
                r = mid - 1;
        }
        return l;
    }
};
发布了44 篇原创文章 · 获赞 0 · 访问量 975

猜你喜欢

转载自blog.csdn.net/weixin_37748689/article/details/102662737