Open carloscn opened 1 year ago
pub fn maximum_units(box_types: Vec<Vec<i32>>, truck_size: i32) -> i32
{
if box_types.len() < 1 || truck_size == 0 {
return 0;
}
let mut ret:i32 = 0;
let mut box_vec:Vec<Vec<i32>> = box_types.clone()
.iter_mut()
.map(|x| {
let t = x[0];
x[0] = x[1];
x[1] = t;
x.clone()
}).collect::<Vec<Vec<i32>>>();
box_vec.sort();
box_vec.reverse();
let mut box_num:i32 = 0;
for e in box_vec {
if box_num + e[1] < truck_size {
ret += e[1] * e[0];
box_num += e[1];
} else {
ret += (box_num + e[1] - truck_size) * e[0];
break;
}
}
return ret;
}
问题描述
请你将一些箱子装在 一辆卡车 上。给你一个二维数组 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