题目链接
https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/
解题思路
1.可以知道题目的要求是求`最大值的最小情况`,因此直接想到`二分答案`;
2.然后就是模板题了~~~~
class Solution {
public:
/*
典型的二分答案
思想:
打表记录下
*/
bool Judge(int x,vector<int>& weights,int D){
int temp=0;int k=0;
for(int i=0;i<weights.size();i++){
if(temp+weights[i]<=x)
temp+=weights[i];
else {
temp=weights[i];
k++;
}
}
return k>=D;
}
int shipWithinDays(vector<int>& weights, int D) {
int l=0;int r=0;
for(int i=0;i<weights.size();i++){
l=max(l,weights[i]);
r=r+weights[i];
}
while(l<=r){
int mid=l+r >>1;
if(Judge(mid,weights,D))l=mid+1;
else r=mid-1;
}
return l;
}
};
总结
二分查找例题:
https://blog.csdn.net/alpha_xia/article/details/115154891
https://blog.csdn.net/alpha_xia/article/details/115220045