Skip to content

Commit 06eab70

Browse files
committed
New Problem Solution -"1710. Maximum Units on a Truck"
1 parent 82a5da2 commit 06eab70

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ LeetCode
6363
|1725|[Number Of Rectangles That Can Form The Largest Square](https://leetcode.com/problems/number-of-rectangles-that-can-form-the-largest-square/) | [C++](./algorithms/cpp/numberOfRectanglesThatCanFormTheLargestSquare/NumberOfRectanglesThatCanFormTheLargestSquare.cpp)|Easy|
6464
|1717|[Maximum Score From Removing Substrings](https://leetcode.com/problems/maximum-score-from-removing-substrings/) | [C++](./algorithms/cpp/maximumScoreFromRemovingSubstrings/MaximumScoreFromRemovingSubstrings.cpp)|Medium|
6565
|1716|[Calculate Money in Leetcode Bank](https://leetcode.com/problems/calculate-money-in-leetcode-bank/) | [C++](./algorithms/cpp/calculateMoneyInLeetcodeBank/CalculateMoneyInLeetcodeBank.cpp)|Easy|
66+
|1710|[Maximum Units on a Truck](https://leetcode.com/problems/maximum-units-on-a-truck/) | [C++](./algorithms/cpp/maximumUnitsOnATruck/MaximumUnitsOnATruck.cpp)|Easy|
6667
|1625|[Lexicographically Smallest String After Applying Operations](https://leetcode.com/problems/lexicographically-smallest-string-after-applying-operations/) | [C++](./algorithms/cpp/lexicographicallySmallestStringAfterApplyingOperations/LexicographicallySmallestStringAfterApplyingOperations.cpp)|Medium|
6768
|1624|[Largest Substring Between Two Equal Characters](https://leetcode.com/problems/largest-substring-between-two-equal-characters/) | [C++](./algorithms/cpp/largestSubstringBetweenTwoEqualCharacters/LargestSubstringBetweenTwoEqualCharacters.cpp)|Easy|
6869
|1605|[Find Valid Matrix Given Row and Column Sums](https://leetcode.com/problems/find-valid-matrix-given-row-and-column-sums/) | [C++](./algorithms/cpp/FindValidMatrixGivenRowAndColumnSums/FindValidMatrixGivenRowAndColumnSums.cpp)|Medium|
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Source : https://leetcode.com/problems/maximum-units-on-a-truck/
2+
// Author : Hao Chen
3+
// Date : 2021-03-30
4+
5+
/*****************************************************************************************************
6+
*
7+
* You are assigned to put some amount of boxes onto one truck. You are given a 2D array boxTypes,
8+
* where boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]:
9+
*
10+
* numberOfBoxesi is the number of boxes of type i.
11+
* numberOfUnitsPerBoxi is the number of units in each box of the type i.
12+
*
13+
* You are also given an integer truckSize, which is the maximum number of boxes that can be put on
14+
* the truck. You can choose any boxes to put on the truck as long as the number of boxes does not
15+
* exceed truckSize.
16+
*
17+
* Return the maximum total number of units that can be put on the truck.
18+
*
19+
* Example 1:
20+
*
21+
* Input: boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
22+
* Output: 8
23+
* Explanation: There are:
24+
* - 1 box of the first type that contains 3 units.
25+
* - 2 boxes of the second type that contain 2 units each.
26+
* - 3 boxes of the third type that contain 1 unit each.
27+
* You can take all the boxes of the first and second types, and one box of the third type.
28+
* The total number of units will be = (1 * 3) + (2 * 2) + (1 * 1) = 8.
29+
*
30+
* Example 2:
31+
*
32+
* Input: boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10
33+
* Output: 91
34+
*
35+
* Constraints:
36+
*
37+
* 1 <= boxTypes.length <= 1000
38+
* 1 <= numberOfBoxesi, numberOfUnitsPerBoxi <= 1000
39+
* 1 <= truckSize <= 10^6
40+
******************************************************************************************************/
41+
42+
class Solution {
43+
private:
44+
void print(vector<vector<int>>& boxes) {
45+
cout << "{ ";
46+
for(int i=0; i<boxes.size()-1; i++){
47+
cout << "[" << boxes[i][0] << ","<< boxes[i][1] << "], ";
48+
}
49+
int i=boxes.size()-1;
50+
cout << "[" << boxes[i][0] << ", "<< boxes[i][1] << "] } "<< endl;
51+
}
52+
public:
53+
int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
54+
sort(boxTypes.begin(), boxTypes.end(),
55+
[&](vector<int>& lhs, vector<int>& rhs){return lhs[1] > rhs[1]; });
56+
//print(boxTypes);
57+
int units = 0;
58+
for(auto& box : boxTypes) {
59+
if (truckSize >= box[0]) {
60+
units += box[0] * box[1];
61+
}else{
62+
units += truckSize * box[1];
63+
}
64+
truckSize -= box[0];
65+
if (truckSize <= 0 ) break;
66+
}
67+
return units;
68+
}
69+
};

0 commit comments

Comments
 (0)