1. 程式人生 > 其它 >力扣1710、卡車上的最大單元數

力扣1710、卡車上的最大單元數

1、降序排序(40ms,70%;15.5MB,92%)

 1  int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
 2         //這是二維向量,boxTypes.size()表示行數,boxTypes[].size()表示列數
 3         //表示列數的[]可以是[0]、[1]、[2]等,只要有[]就是二維的
 4         int sum=0;      
 5         int a=0;
 6         int len=truckSize;
 7         //
對向量第二維進行降序排序,沒看懂 8 sort(boxTypes.begin(),boxTypes.end(),[](const auto &L,const auto &R) {return L[1]>R[1];}); 9 while(a<boxTypes.size()&&len!=0){ 10 if(boxTypes[a][0]<len){ 11 len-=boxTypes[a][0]; 12 sum+=(boxTypes[a][0
]*boxTypes[a][1]); 13 a++; 14 } 15 else{ 16 sum+=(len*boxTypes[a][1]); 17 len=0; 18 } 19 } 20 return sum; 21 }

2、降序排序(44ms,46%;15.5MB,92%)

 1  static bool cmp(const vector<int>& L,const vector<int
>& R){ 2 return L[1]>R[1]; 3 } 4 int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) { 5 //這是二維向量,boxTypes.size()表示行數,boxTypes[].size()表示列數 6 //表示列數的[]可以是[0]、[1]、[2]等,只要有[]就是二維的 7 int sum=0; 8 int a=0; 9 int len=truckSize; 10 //對向量第二維進行降序排序,還是沒看懂 11 sort(boxTypes.begin(),boxTypes.end(),cmp); 12 while(a<boxTypes.size()&&len!=0){ 13 if(boxTypes[a][0]<len){ 14 len-=boxTypes[a][0]; 15 sum+=(boxTypes[a][0]*boxTypes[a][1]); 16 a++; 17 } 18 else{ 19 sum+=(len*boxTypes[a][1]); 20 len=0; 21 } 22 } 23 return sum; 24 }

3、升序排序(44ms,46%;15.5MB,92%)

 1 int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
 2         //這是二維向量,boxTypes.size()表示行數,boxTypes[].size()表示列數
 3         //表示列數的[]可以是[0]、[1]、[2]等,只要有[]就是二維的
 4         int sum=0;      
 5         int a=boxTypes.size()-1;
 6         int len=truckSize;
 7         //對向量第二維進行升序排序,沒看懂
 8         sort(boxTypes.begin(),boxTypes.end(),[](const auto& L,const auto& R){return L[1]<R[1];});
 9         while(a<boxTypes.size()&&len!=0){
10             if(boxTypes[a][0]<len){
11                 len-=boxTypes[a][0];
12                 sum+=(boxTypes[a][0]*boxTypes[a][1]);
13                 a--;
14             }
15             else{
16                 sum+=(len*boxTypes[a][1]);
17                 len=0;
18             }
19         }
20         return sum;
21     }

4、升序排序(40ms,70%;15.5MB,92%)

 1     static bool cmp(const vector<int>& L,const vector<int>& R){
 2         return L[1]<R[1];
 3     }
 4     int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
 5         //這是二維向量,boxTypes.size()表示行數,boxTypes[].size()表示列數
 6         //表示列數的[]可以是[0]、[1]、[2]等,只要有[]就是二維的
 7         int sum=0;      
 8         int a=boxTypes.size()-1;
 9         int len=truckSize;
10         //對向量第二維進行升序排序,還是沒看懂
11         sort(boxTypes.begin(),boxTypes.end(),cmp);
12         while(a<boxTypes.size()&&len!=0){
13             if(boxTypes[a][0]<len){
14                 len-=boxTypes[a][0];
15                 sum+=(boxTypes[a][0]*boxTypes[a][1]);
16                 a--;
17             }
18             else{
19                 sum+=(len*boxTypes[a][1]);
20                 len=0;
21             }
22         }
23         return sum;
24     }