目录
[134. 加油站](#134. 加油站)
[135. 分发糖果](#135. 分发糖果)
[860. 柠檬水找零](#860. 柠檬水找零)
[406. 根据身高重建队列](#406. 根据身高重建队列)
134. 加油站
cpp
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int ans=0;
int sum=0;
int minsum=0;
for(int i=0;i<gas.size();i++){
sum+=gas[i]-cost[i];
if(sum<minsum){
minsum=sum;
ans=i+1;
}
}
if(sum<0)return -1;
else return ans;
}
};
135. 分发糖果
cpp
class Solution {
public:
int candy(vector<int>& ratings) {
int n=ratings.size();
int ans=n;
vector<int> left(n);
for(int i=0;i<n;i++){
if(i&&ratings[i]>ratings[i-1])left[i]=left[i-1]+1;
else left[i]=0;
}
int right=0;
for(int i=n-1;i>=0;i--){
if(i!=n-1&&ratings[i]>ratings[i+1])right++;
else right=0;
ans+=max(left[i],right);
}
return ans;
}
};
860. 柠檬水找零
cpp
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
unordered_map<int,int> map;
for(int t:bills){
if(t==5)map[5]++;
else if(t==10){
if(map[5])map[5]--;
else return false;
map[10]++;
}
else {
if(map[10]&&map[5]){
map[10]--;
map[5]--;
}
else if(map[5]>=3){
map[5]-=3;
}
else return false;
map[20]++;
}
}
return true;
}
};
406. 根据身高重建队列
cpp
class Solution {
static bool com(vector<int>& a,vector<int>& b){
if(a[0]!=b[0])return a[0]>b[0];
else return a[1]<b[1];
}
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
vector<vector<int>>ans;
sort(people.begin(),people.end(),com);
for(int i=0;i<people.size();i++){
int k=people[i][1];
ans.insert(ans.begin()+k,people[i]);
}
return ans;
}
};
