题目描述
有N个小朋友站在一排,每个小朋友都有一个评分
你现在要按以下的规则给孩子们分糖果:
每个小朋友至少要分得一颗糖果
分数高的小朋友要他比旁边得分低的小朋友分得的糖果多
你最少要分发多少颗糖果?
- 思路:正扫一次,倒扫一次
class Solution {
public:
/**
*
* @param ratings int整型vector
* @return int整型
*/
int candy(vector<int>& ratings) {
// write code here
int l = ratings.size();
vector<int> height(l,1);
for(int i=1;i<l;i++){
if(ratings[i] > ratings[i-1]){
height[i] = max(height[i],height[i-1]+1);
}
}
for(int i=l-2;i>=0;i--){
if(ratings[i] > ratings[i+1]){
height[i] = max(height[i],height[i+1]+1);
}
}
int ans = 0;
for(int i=0;i<l;i++){
ans += height[i];
}
return ans;
}
};