夏天吃辣椒

导航

 

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     }

 

posted on 2021-11-04 16:46  夏天吃辣椒  阅读(45)  评论(0)    收藏  举报