134.加油站
想不出,抄题解。
代码如下:
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 < cost.size(); i++){
curSum += gas[i] - cost[i];
totalSum += gas[i] - cost[i];
if(curSum < 0){
curSum = 0;
start = i + 1;
}
}
if(totalSum < 0) return -1;
return start;
}
};
135.分发糖果
想不出+1
代码如下:
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candy(ratings.size(), 1);
for(int i = 1; i < ratings.size(); i++){
if(ratings[i] > ratings[i - 1]) candy[i] = candy[i - 1] + 1;
}
for(int i = ratings.size() - 2; i >= 0; i--){
if(ratings[i] > ratings[i + 1]) candy[i] = max(candy[i], candy[i + 1] + 1);
}
int result = 0;
for(int i : candy) result += i;
return result;
}
};
860.柠檬水找零
想不出+1
代码如下:
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0, ten = 0, twenty = 0;
for(int bill : bills){
if(bill == 5) five++;
else if(bill == 10){
if(five > 0){
five--;
ten++;
}
else return false;
}
else{
if(five > 0 && ten > 0){
five--;
ten--;
twenty++;
}
else if(five >= 3){
five = 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>> result;
for(int i = 0; i < people.size(); i++){
int position = people[i][1];
result.insert(result.begin() + position, people[i]);
}
return result;
}
};