leetcode 1011. 在 D 天内送达包裹的能力

二分法

class Solution {
public:
    int shipWithinDays(vector<int>& weights, int D) {
        int left = 0,right = 25000000;
        int n = weights.size();
        while(left<right) {
            int ship = (left+right)/2;
            int tmp = 0;
            int day = 1;
            for(int i=0;i<n;i++) {
                if(weights[i]>ship) {
                    day=D+1;
                    break;
                }
                if(weights[i]+tmp>ship) {
                    tmp = weights[i];
                    day+=1;
                }else tmp+=weights[i];
            }
            if(day<=D) {
                right = ship;
            }else{
                left = ship+1;
            }
            //cout<<left<<" "<<right<<endl;
        }
        return left;
    }
};
上一篇:eclipse添加easyExport插件,打开本地文件


下一篇:正式赛1011 合法匹配