1710. 卡车上的最大单元数
leetcode描述
请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :
numberOfBoxesi 是类型 i 的箱子的数量。 numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。 整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。
返回卡车可以装载 单元 的 最大 总数。
解题思路
- 将箱子排序,把能装多的单元的箱子放到前面
- 用一个一个数组模拟卡车truckBoxs
- 然后就往卡在中装箱子,直到装不下或者没有货物装了
- 然后统计卡车中所有单元数
代码
/**
* @param {number[][]} boxTypes
* @param {number} truckSize
* @return {number}
*/
var maximumUnits = function(boxTypes, truckSize) {
let truckBoxs = [];
boxTypes.sort((a, b) => {
return b[1] - a[1];
});
while (truckSize > 0 && boxTypes.length > 0) {
if (boxTypes[0][0] >= truckSize) {
truckBoxs.push([truckSize, boxTypes[0][1]]);
truckSize = 0;
} else {
let boxType = boxTypes.shift();
truckBoxs.push(boxType);
truckSize = truckSize - boxType[0];
}
}
return truckBoxs.reduce((pre, currun) => pre + currun[0] * currun[1], 0);
};