860.柠檬水找零
题目链接:https://leetcode.cn/problems/lemonade-change/submissions/
代码:
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five_dol = 0;
int ten_dol = 0;
for(int i = 0; i < bills.size(); i++)
{
if(bills[i] == 5)
five_dol++;
else if(bills[i] == 10)
{
if(five_dol > 0)
{
five_dol--;
ten_dol++;
}else return false;
}
else if(bills[i] == 20)
{
if(ten_dol > 0 && five_dol > 0)
{
five_dol--;
ten_dol--;
}else if(five_dol > 2)
{
five_dol = five_dol - 3;
}else return false;
}
}
return true;
}
};
就是分成三种情况 很简单
406.根据身高重建队列
题目链接:https://leetcode.cn/problems/queue-reconstruction-by-height/
代码:
class Solution {
public:
//cmp函数:>: 降序排列; < : 升序排列
static bool cmp(vector<int> A,vector<int> B)
{
if(A[0] == B[0])
return A[1] < B[1];
return A[0] > B[0];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(),people.end(),cmp);
list<vector<int>> que;
for(int i = 0; i < people.size(); i++)
{
int pos = people[i][1];
std::list<vector<int>>::iterator it = que.begin();
while(pos--)
it++;
que.insert(it,people[i]);
}
return vector<vector<int>>(que.begin(),que.end());
}
};
这个有点难 思路理解了 但是代码的写法还不太熟悉
452. 用最少数量的箭引爆气球
题目链接:https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/
代码:
class Solution {
public:
static bool cmp(const vector<int>& A ,const vector<int>& B)
{
return A[0] < B[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
if(points.size() == 0)
return 0;
sort(points.begin(),points.end(),cmp);
int result = 1;
for(int i = 1; i < points.size();i++)
{
if(points[i][0] > points[i-1][1])
{
result++;
}else
{
points[i][1] = min(points[i-1][1],points[i][1]);
}
}
return result;
}
};
这道题是有思路的 但是在result++的那个地方卡住了 看了代码随想录,知道可以先把不符合要求的加上 然后再合并
有一个情况:cmp如下时不会会报错
static bool cmp(const vector<int>& A ,const vector<int>& B)
但是:
static bool cmp(vector<int> A ,vector<int> B)
时会超时 为啥啊