【LC刷题】DAY25:134 135 860 460
134. 加油站 link
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int curSum = 0;
int min = INT_MAX;
for(int i = 0; i < gas.size() ; i ++){
int rest = gas[i] - cost[i];
curSum += rest;
if(curSum < min){
min = curSum;
}
}
if(curSum < 0) return -1;
if(min >= 0) return 0;
for(int i = gas.size() - 1; i >= 0; i --){
int rest = gas[i] - cost[i];
min += rest;
if(min >= 0){
return i;
}
}
return -1;
}
};
135. 分发糖果 link
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candyVec(ratings.size(), 1);
for(int i = 1; i < ratings.size(); i ++){
if(ratings[i] > ratings[i - 1]) candyVec[i] = candyVec[i - 1] + 1;
}
for(int i = ratings.size() - 2; i >= 0; i --){
if(ratings[i] > ratings[i + 1]){
candyVec[i] = max(candyVec[i], candyVec[i + 1] + 1);
}
}
int result = 0;
for(int i = 0; i < candyVec.size(); i ++) result += candyVec[i];
return result;
}
};
860. 柠檬水找零 link
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0, ten = 0, twenty = 0;
for(int bill: bills){
if(bill == 5) five ++;
if(bill == 10 ) {
if(five <= 0) return false;
ten ++;
five --;
}
if(bill == 20){
if(five >0 && ten > 0){
five --;
ten --;
twenty ++;
}else if(five >= 3){
five -= 3;
twenty ++;
}else return false;
}
}
return true;
}
};
406. 根据身高重建队列 link
class Solution {
public:
static bool cmp(const vector<int>& a, const 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>> que;
for(int i = 0; i < people.size(); i ++){
int position = people[i][1];
que.insert(que.begin() + position, people[i]);
}
return que;
}
};