vector 的sort 怎么写
// sort是一个全局函数,不依赖与一个具体类的实现,所以声明为静态函数
static bool cmp(vector<int>&a, vector<int>&b){
if(a[0] != b[0]) return a[0] > b[0];
return a[1] < b[1];
}
sort(people.begin(), people.end(),cmp);
//第二种直接在sort中写
sort(people.begin(), people.end(),[&](vector<int>&a, vector<int>&b){
if(a[0] != b[0]) return a[0] > b[0];
return a[1] < b[1];
});
情况一:账单是5,直接收下。
情况二:账单是10,消耗一个5,增加一个10
情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int a[3]={0, 0, 0}; // a[0] 五元 a[1] 10元 a[2] 20元
for(int i=0; i<bills.size(); i++){
if(bills[i] == 5){
a[0]++;
}else if(bills[i] == 10){
a[1]++;
if(a[0]>0){
a[0]--;
}else return false;
}else {
a[2]++;
if(a[1] > 0){
a[1]--;
if(a[0]>0){
a[0]--;
}else return false;
}else{
if(a[0]>2){
a[0] = a[0] - 3;
}else return false;
}
}
}
return true;
}
};
- 按照身高进行排序,身高从大到小, 身高相同 k 小的在前面
- 按照key进行插入
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(),[&](vector<int>&a, vector<int>&b){
if(a[0] != b[0]) return a[0] > b[0];
return a[1] < b[1];
});
vector<vector<int>>result;
for(int i=0; i<people.size(); i++){
result.insert(result.begin() + people[i][1], people[i]);
}
return result;
}
};