1710. 卡车上的最大单元数

113 阅读1分钟

1710. 卡车上的最大单元数

leetcode描述

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

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

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

解题思路

  1. 将箱子排序,把能装多的单元的箱子放到前面
  2. 用一个一个数组模拟卡车truckBoxs
  3. 然后就往卡在中装箱子,直到装不下或者没有货物装了
  4. 然后统计卡车中所有单元数

代码

/**
 * @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);
};