134. 加油站
https://leetcode.cn/problems/gas-station/description/
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int curSum = 0; //剩余总油量
int totalSum = 0;
int start = 0;
for(int i = 0; i< gas.size(); i++){
curSum+= gas[i] - cost[i];
totalSum += gas[i] - cost[i];
if(curSum<0){
// 当前累加rest[i]和 curSum一旦小于0
start = i + 1; // 起始位置更新为i+1
curSum = 0;
}
}
if (totalSum < 0)
return -1;
return start;
}
};
135. 分发糖果
https://leetcode.cn/problems/candy/submissions/560424774/
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.柠檬水找零
https://leetcode.cn/problems/lemonade-change/submissions/560444638/
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.根据身高重建队列
https://leetcode.cn/problems/queue-reconstruction-by-height/description/
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;
}
};