mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 16:36:41 +08:00
77 lines
2.6 KiB
Markdown
77 lines
2.6 KiB
Markdown
# [1710. Maximum Units on a Truck](https://leetcode.com/problems/maximum-units-on-a-truck/)
|
||
|
||
|
||
## 题目
|
||
|
||
You are assigned to put some amount of boxes onto **one truck**. You are given a 2D array `boxTypes`, where `boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]`:
|
||
|
||
- `numberOfBoxesi` is the number of boxes of type `i`.
|
||
- `numberOfUnitsPerBoxi`is the number of units in each box of the type `i`.
|
||
|
||
You are also given an integer `truckSize`, which is the **maximum** number of **boxes** that can be put on the truck. You can choose any boxes to put on the truck as long as the number of boxes does not exceed `truckSize`.
|
||
|
||
Return *the **maximum** total number of **units** that can be put on the truck.*
|
||
|
||
**Example 1:**
|
||
|
||
```
|
||
Input: boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
|
||
Output: 8
|
||
Explanation: There are:
|
||
- 1 box of the first type that contains 3 units.
|
||
- 2 boxes of the second type that contain 2 units each.
|
||
- 3 boxes of the third type that contain 1 unit each.
|
||
You can take all the boxes of the first and second types, and one box of the third type.
|
||
The total number of units will be = (1 * 3) + (2 * 2) + (1 * 1) = 8.
|
||
```
|
||
|
||
**Example 2:**
|
||
|
||
```
|
||
Input: boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10
|
||
Output: 91
|
||
```
|
||
|
||
**Constraints:**
|
||
|
||
- `1 <= boxTypes.length <= 1000`
|
||
- `1 <= numberOfBoxesi, numberOfUnitsPerBoxi <= 1000`
|
||
- `1 <= truckSize <= 106`
|
||
|
||
## 题目大意
|
||
|
||
请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :
|
||
|
||
- numberOfBoxesi 是类型 i 的箱子的数量。-
|
||
- numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。
|
||
|
||
整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。返回卡车可以装载 单元 的 最大 总数。
|
||
|
||
## 解题思路
|
||
|
||
- 简单题。先将箱子按照单元数量从大到小排序。要想卡车装载单元数最大,那么需要尽量装单元数多的箱子。所以排序以后从单元数量多的箱子开始取。一直取至 truckSize 没有空间。累积的单元数即最大总数。
|
||
|
||
## 代码
|
||
|
||
```go
|
||
package leetcode
|
||
|
||
import "sort"
|
||
|
||
func maximumUnits(boxTypes [][]int, truckSize int) int {
|
||
sort.Slice(boxTypes, func(i, j int) bool {
|
||
return boxTypes[i][1] > boxTypes[j][1]
|
||
})
|
||
res := 0
|
||
for i := 0; truckSize > 0 && i < len(boxTypes); i++ {
|
||
if truckSize >= boxTypes[i][0] {
|
||
truckSize -= boxTypes[i][0]
|
||
res += (boxTypes[i][1] * boxTypes[i][0])
|
||
} else {
|
||
res += (truckSize * boxTypes[i][1])
|
||
truckSize = 0
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
``` |