class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0;
int ten = 0;
int twenty = 0;
for(int i = 0; i < bills.size(); i++) {
if(bills[i] == 5)
five++;
else if(bills[i] == 10) {
if(five > 0) {
five--;
ten++;
}
else return false;
}
else {
if(ten > 0 && five > 0) {
ten--;
five--;
twenty++;
}
else if(five >= 3) {
five -= 3;
twenty++;
}
else return false;
}
}
return true;
}
};
class Solution {
public:
static bool cmp1(vector<int> &vec1, vector<int> &vec2) {
return vec1[0] > vec2[0];
}
static bool cmp2(vector<int> &vec1, vector<int> &vec2) {
return vec1[1] < vec2[1];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(), cmp1);
vector<vector<int>>::size_type i = 0;
while(i < people.size()) {
vector<vector<int>>::size_type j = i;
while(i < people.size() && people[i][0] == people[j][0]) i++;
sort(people.begin() + j, people.begin() + i, cmp2);
}
i = 1;
while(i < people.size()) {
if(i > people[i][1]) {
vector<int> temp = people[i];
people.erase(people.begin() + i);
people.insert(people.begin() + temp[1], temp);
}
i++;
}
return people;
452. 用最少数量的箭引爆气球 - 力扣(Leetcode)
class Solution {
public:
static bool cmp1(vector<int> &p1, vector<int> &p2) {
return p1[0] < p2[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
sort (points.begin(), points.end(), cmp1);
int arrow = 0;
int pre = 0, curr = 0;
while(curr < points.size()) {
while(curr < points.size() && points[pre][1] >= points[curr][0]) {
if(points[pre][1] > points[curr][1]) pre = curr;
curr++;
}
arrow++;
pre = curr;
}
return arrow;
}
};