1011. 在 D 天内送达包裹的能力
2021/10/25 23:11:08
本文主要是介绍1011. 在 D 天内送达包裹的能力,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.Arrays; public class Algorithm { public static void main(String[] args) { int[] weights = {1,2,3,4,5,6,7,8,9,10}; System.out.println(new Solution().shipWithinDays(weights, 5)); } } class Solution { public int shipWithinDays(int[] weights, int days) { /** * 最小运输量为所有货物中最重的那个,否则大于它的货物永远不能运载 */ int minLoad = Arrays.stream(weights).max().getAsInt(); int maxLoad = Arrays.stream(weights).sum(); while (minLoad < maxLoad) { int load = minLoad + (maxLoad- minLoad) / 2; if (time(weights, load) > days) { minLoad = load + 1; } else { maxLoad = load; } } return minLoad; } public int time(int[] weights, int load){ int res = 0; /** * 初始船数量最少为1 */ int n = 1; int i = 0; while (i < weights.length) { /** * 如果货物累计重量小于等于运载量,就累计,再计算下一个货物 */ if (res + weights[i] <= load) { res += weights[i]; i++; } /** * 否则当前货物不动,清空累计,再加一艘船来计算 */ else { n++; res = 0; } } return n; } }
https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/
这篇关于1011. 在 D 天内送达包裹的能力的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南