860.柠檬水找零
本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five=0,ten=0,twenty=20;
for (int bill:bills){
if (bill==5)five++;
else if (bill==10){
if (five<=0)return false;
five--;
ten++;
}
else {
if (five>0 && ten>0){
five--;ten--;twenty++;
}
else if (five>=3){
five-=3;twenty++;
}
else return false;
}
}
return true;
}
};
406.根据身高重建队列
本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。
class Solution {
public:
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);
vector<vector<int>>res;
for (int i=0;i<people.size();i++){
int position=people[i][1];
res.insert(res.begin()+position,people[i]);
}
return res;
}
};
总结
感觉思路很巧妙。
452. 用最少数量的箭引爆气球
本题是一道 重叠区间的题目,好好做一做,因为明天三道题目,都是 重叠区间。
class Solution {
public:
static bool cmp(vector<int>a,vector<int>b){
if (a[0]==b[0])return a[1]<b[1];
return a[0]<b[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
sort(points.begin(),points.end(),cmp);
long long mi=1e18;long long ma=-1e18;
int res=1;
for (auto point:points){
mi=mi<point[1]?mi:point[1];
ma=ma>point[0]?ma:point[0];
if (mi<ma){
res++;
mi=point[1];
ma=point[0];
}
}
return res;
}
};
总结
这时间复杂度不是nlngn吗?怎么给我运行了两秒。