本文最后更新于608 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
https://programmercarl.com/0135.%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.html
1.本题最重要的思路就是不能同时判断两边,分别考虑两边然后取最大值。
CPP
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 + 1] + 1, candy[i]);
}
}
int sum = 0;
for(int i = 0; i <ratings.size(); i++){
sum += candy[i];
}
return sum;
}
};