力扣-贪心-135 分发糖果
思路
从左往右,如果比前一个大,就加一,如果不大就还为1,以为ratings={1,3,2,2,1}为例,此时糖果为candy={1,2,1,1,1},再从后往前遍历,如果比后一个大,就选一个max{当前值,后一个值加一},即为candy={1,2,1,2,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 res = 0;
for(int x: candy){
res += x;
}
return res;
}
};