请你将一些箱子装在一辆卡车上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi,numberOfUnitsPerBoxi] :
numberOfBoxesi 是类型 i 的箱子的数量。 numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。
整数 truckSize 表示卡车上可以装载箱子的最大数量 。只要箱子数量不超过 truckSize,你就可以选择任意箱子装到卡车上。返回卡车可以装载单元的最大总数。
示例 1:
输入:boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
输出: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