卡车拉货

1、描述

  1. 卡车上的最大单元数,卡车装箱子的个数确定,箱子容量不确定,给定一串元组,元组第一个元素表示当前箱子的个数,元组的第二个元素表示当前箱子的容量。
    题目给出的一串元组用二维数组给出,然后给出卡车能装的箱子个数,
    求卡车的容量

2、关键字,

最大容量

3、思路

把箱子的容量进行排序。然后把容量最大的几个箱子装上去。
贪心算法

4、notes

谓词:回调函数的使用:直接只写名字就行。
2、谓词:的写法:升序排列使用<小于号!写成static静态函数
3、即使直接使用vector的第2个元素也可以,不必在形参的位置给出来初始化的长度,这是错的!

5、复杂度

时间:O(nlog(n)) ?
空间:O(1)

6、code

class Solution {
public:
    // static不能省,不然就错了
    //static bool mysort(vector<int>(2)&a,vector<int>&(2)b){  //错的
    static bool mysort(vector<int>&a,vector<int>&b){  // 谓词:回调函数,降序排列下一行使用>号
        return a[1]>b[1];
    }	
    int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
        sort(boxTypes.begin(),boxTypes.end(),mysort);  // 根据第二个进行降序排列
	    //vector<int>ve;  // 本来想着使用ve把里边重复的元素展开,然后直接取前truckSize个,不过有错,就直接加在结果res上了
        int res=0;
	    for(auto box:boxTypes){
		    while(box[0]--){
                truckSize--;
                if(truckSize>=0)
               res+=box[1];
		    }
        }	
	    // for(int i=0;i<truckSize;i++){
		//     res+=ve[i];
        // }
        return res;
    }
};
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页