每日一题:【LeetCode】1710. 卡车上的最大单元数

这是一个关于优化装载的问题,目标是最大化卡车装载的单元总数。给定不同类型的箱子和卡车的装载限制,需要按箱子单位数量降序装载以达到最大总量。解决方案是首先对箱子类型按单位数量降序排序,然后依次装载最多数量的高单位箱子,直到卡车满载或无法再装下任何箱子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

题目

请你将一些箱子装在一辆卡车上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi,numberOfUnitsPerBoxi] :

numberOfBoxesi 是类型 i 的箱子的数量。 numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。
整数 truckSize 表示卡车上可以装载箱子的最大数量 。只要箱子数量不超过 truckSize,你就可以选择任意箱子装到卡车上。

返回卡车可以装载单元的最大总数。

示例 1:
输入:boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
输出:8
解释:箱子的情况如下:

  • 1 个第一类的箱子,里面含 3 个单元。
  • 2 个第二类的箱子,每个里面含 2 个单元。
  • 3 个第三类的箱子,每个里面含 1 个单元。
    可以选择第一类和第二类的所有箱子,以及第三类的一个箱子。
    单元总数 = (1 * 3) + (2 * 2) + (1 * 1) = 8

示例 2:
输入:boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10
输出:91

提示:

1 <= boxTypes.length <= 1000
1 <= numberOfBoxesi, numberOfUnitsPerBoxi <= 1000
1 <= truckSize <= 106

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-units-on-a-truck
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

要求卡车可以装载单元的最大总数,很容易想到先装单元数量大的箱子,不够再装单元数量小一点的箱子,直至箱子数量达到truckSize
于是要做的就是对boxTypes数组进行排序,按照numberOfUnitsPerBoxi进行降序排列

class Solution:
    def maximumUnits(self, boxTypes: List[List[int]], truckSize: int) -> int:
        boxTypes.sort(key=lambda x: x[1],reverse=True)
        sum=0
        for i in boxTypes:
            if truckSize>=i[0]:
                truckSize-=i[0]
                sum+=i[1]*i[0]
            else:
                sum+=i[1]*truckSize
                break
        return sum
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值