1. 程式人生 > 其它 >【Leetcode】1710. Maximum Units on a Truck

【Leetcode】1710. Maximum Units on a Truck

技術標籤:LC 貪心、動態規劃與記憶化搜尋leetcode資料結構

題目地址:

https://leetcode.com/problems/maximum-units-on-a-truck/

給定一系列物品,每個物品 i i i A [ i ] [ 0 ] A[i][0] A[i][0]這麼多個,並且價值是 A [ i ] [ 1 ] A[i][1] A[i][1]。有個容量為 s s s的揹包(意味著可以最多放 s s s個物品),問能容納的物品最大價值。

思路是貪心。由於每個物品的size都是 1 1 1,顯然我們應該優先放價值更大的物品,直到放不下為止。程式碼如下:

import java.util.
Arrays; public class Solution { public int maximumUnits(int[][] boxTypes, int truckSize) { int res = 0; // 按價值從大到小排序 Arrays.sort(boxTypes, (b1, b2) -> -Integer.compare(b1[1], b2[1])); for (int[] boxType : boxTypes) { // 能全放進去,就全放進去 if (truckSize >=
boxType[0]) { res += boxType[0] * boxType[1]; truckSize -= boxType[0]; } else { // 不能全放進去,則儘量放,並退出迴圈 res += truckSize * boxType[1]; break; } } return res; } }

時間複雜度 O ( n log ⁡ n ) O(n\log n)

O(nlogn),空間 O ( 1 ) O(1) O(1)