力扣1710、卡車上的最大單元數
阿新 • • 發佈:2021-11-04
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 }