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

题目链接

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/submissions/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。

传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。

返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。

示例 1:

  1. 输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5
  2. 输出:15
  3. 解释:
  4. 船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:
  5. 1 天:1, 2, 3, 4, 5
  6. 2 天:6, 7
  7. 3 天:8
  8. 4 天:9
  9. 5 天:10
  10. 请注意,货物必须按照给定的顺序装运,因此使用载重能力为 14 的船舶并将包装分成 (2, 3, 4, 5), (1, 6, 7), (8), (9), (10) 是不允许的。

示例 2:

  1. 输入:weights = [3,2,2,4,1,4], D = 3
  2. 输出:6
  3. 解释:
  4. 船舶最低载重 6 就能够在 3 天内送达所有包裹,如下所示:
  5. 1 天:3, 2
  6. 2 天:2, 4
  7. 3 天:1, 4

示例 3:

  1. 输入:weights = [1,2,3,1,1], D = 4
  2. 输出:3
  3. 解释:
  4. 1 天:1
  5. 2 天:2
  6. 3 天:3
  7. 4 天:1, 1

提示:

  • 1 <= D <= weights.length <= 50000
  • 1 <= weights[i] <= 500

题目分析

  1. 根据题目描述计算船最小运载能力,把传送带上的包裹按顺序在D天内运送完毕
  2. 船的最小运载能力是要比最大的包裹的重量大,并且要大于包裹总重量除以D

代码

  1. class Solution {
  2. public:
  3. int shipWithinDays(vector<int>& weights, int D) {
  4. int sumWeight = 0;
  5. for (auto w : weights) sumWeight += w;
  6. int shipWeight = sumWeight % D == 0 ? sumWeight / D : sumWeight / D + 1;
  7. for (auto w : weights) shipWeight = shipWeight > w ? shipWeight : w;
  8. while (1) {
  9. int day = D;
  10. int weight = shipWeight;
  11. for (auto w : weights) {
  12. if (day <= 0) break;
  13. if (weight - w < 0) {
  14. weight = shipWeight;
  15. --day;
  16. }
  17. weight -= w;
  18. }
  19. if (day > 0) break;
  20. ++shipWeight;
  21. }
  22. return shipWeight;
  23. }
  24. };

刷题-力扣-1011. 在 D 天内送达包裹的能力的更多相关文章

  1. Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days)

    Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days) 传送带上的包裹必须在 D 天内从一个港口运送到另 ...

  2. 刷题-力扣-剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de ...

  3. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器

    剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...

  4. 刷题-力扣-541. 反转字符串 II

    541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...

  5. 刷题-力扣-113. 路径总和 II

    113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...

  6. 刷题-力扣-1137. 第 N 个泰波那契数

    1137. 第 N 个泰波那契数 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/n-th-tribonacci-number 著作权 ...

  7. 刷题-力扣-LCP 07. 传递信息

    LCP 07. 传递信息 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/chuan-di-xin-xi 著作权归领扣网络所有.商业转 ...

  8. 刷题-力扣-168. Excel表列名称

    168. Excel表列名称 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/excel-sheet-column-title 著作权 ...

  9. 刷题-力扣-337. 打家劫舍 III

    337. 打家劫舍 III 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/house-robber-iii 著作权归领扣网络所有.商 ...

随机推荐

  1. Jenkins 进阶篇 - 参数化构建

    我们在构建任务时经常会遇到这样的情景,一个任务配置好了以后,在后面的构建过程中,又会修改一些配置.例如,我们构建项目的代码可能是拉取指定的分支或者是Tag进行构建,又或者是在构建是需要指定特定的运行平 ...

  2. P5350 序列

    P5350 序列 题意 维护一个序列,支持区间求和.赋值.加值.复制.交换.翻转操作,其中交换和复制操作保证两段区间长度相等且不交.答案对 \(1e9+7\) 取模. 思路 对于区间求和.赋值.加值. ...

  3. Error:Connection activation failed: No suitable device found for this connection 问题最新解决方案

    虽然网上有很多关于这个问题的解决方案,但是我还是决定自己再次重复写一下这个解决的方案,重在更新知识和了解VMware workstation 15新功能. 在使用VMware workstation克 ...

  4. vulnhub-DC:1靶机渗透记录

    准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-1,292/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...

  5. 13Java进阶——IO、线程

    1 字节缓冲流 BufferInputStream 将创建一个内部的缓冲区数组,内部缓冲区数组将根据需要从包含的输入流中重新填充,一次可以读取多个字节 BufferOutputStream 该类实现缓 ...

  6. redis数据类型及应用场景

    0.key的通用操作 KEYS * keys a keys a* 查看已存在所有键的名字 ****TYPE 返回键所存储值的类型 ****EXPIRE\ PEXPIRE 以秒\毫秒设定生存时间 *** ...

  7. SQL Server 判断表名称、索引、表字段是否存在

    1.判断索引是否存在 ps:@tableName 表名称, @indexName 索引名 IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id=OB ...

  8. CentOS 8.0 安装docker 报错:Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1

    1.错误内容 package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of th ...

  9. 给每个li延时添加样式动画效果(setInterval,clearInterval)

    btnsAnime($('ul li')) function btnsAnime(pagesl) { var that = this $(pagesl).hide() let i = 0; funct ...

  10. XCTF-simple unpack

    题目提示这是一个加壳的二进制文件,拖到exeinfope,是UPX壳. 这里我们用linux命令upx -d脱壳. 脱完壳之后拉入ida64中分析.找到main函数,可以看到这一句可以是输出flag的 ...