135. 分发糖果
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/candy/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
向左向右,先确定一边,再确定另一边。
注意第二次遍历的时候取它之前的值和新值的最大值。
class Solution {
public:
int candy(vector<int>& ratings) {
int n = ratings.size();
vector<int> res(n, 1);
//从前往后
for(int i = 1;i < n; i++){
if(ratings[i] > ratings[i -1]){
res[i] = res[i - 1] + 1;
}
}
//从后往前
for(int i = n - 2; i >= 0; i--){
if(ratings[i] > ratings[i + 1]){
res[i] = max(res[i + 1] + 1, res[i]);//取最大值
}
}
int sum = 0;
for(int i = 0; i < n; i++){
sum += res[i];
}
return sum;
}
};