题目描述:
有N个小朋友站在一排,每个小朋友都有一个评分
你现在要按以下的规则给孩子们分糖果:
每个小朋友至少要分得一颗糖果
分数高的小朋友要他比旁边得分低的小朋友分得的糖果多
你最少要分发多少颗糖果?
public class Solution {
public int candy(int[] ratings) {
int sum=0,i,n;
n=ratings.length;
int b[]=new int[n];
for(i=0;i<n;i++){
b[i]=1;
}
for(i=1;i<n;i++){
if(ratings[i]>ratings[i-1]){
b[i]=b[i-1]+1;
}
}
for(i=n-2;i>=0;i--){
if(ratings[i]>ratings[i+1]&&b[i]<=b[i+1]){
b[i]=b[i+1]+1;
}
}
for(i=0;i<n;i++){
sum+=b[i];
}
return sum;
}
}