参考资料:代码随想录
题目链接:. - 力扣(LeetCode)
题意,“每个孩子至少分配1个糖果”,从中分析出,用1填满一个ratings大小的数组;
“相邻两个孩子评分更高的会获得更多的糖果”,分析出夹在中间的那个孩子糖果数量多余两侧;
class Solution {
public int candy(int[] ratings) {
int[] nums = new int[ratings.length];
Arrays.fill(nums,1);
for(int i = 1;i < ratings.length;i++){
if(ratings[i] > ratings[i-1]){
nums[i] = nums[i-1]+1;
}
}
for(int i = ratings.length-2;i >= 0;i--){
if(ratings[i] > ratings[i+1]){
nums[i] = Math.max(nums[i],nums[i+1]+1);
}
}
return Arrays.stream(nums).sum();
}
}