【二分法】在 D 天内送达包裹的能力
2026/7/3 1:13:42 网站建设 项目流程


求解代码

publicintshipWithinDays(int[]weights,intdays){intleft=0;intsum=0;for(intweight:weights){left=Math.max(left,weight);sum+=weight;}intright=sum;while(left<right){intmid=left+((right-left)>>1);if(f(weights,mid)<=days){// 满足天数要求:尝试更小的运载能力,收缩右边界right=mid;}else{// 不满足要求:必须增大运载能力,收缩左边界left=mid+1;}}returnleft;}privateintf(int[]weights,intcapacity){intdays=0;for(inti=0;i<weights.length;){intcap=capacity;while(i<weights.length){// 装不下当前包裹,结束本批次运输if(cap<weights[i]){break;}else{cap-=weights[i];}i++;}// 完成一趟运输,天数+1days++;}returndays;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询