大致思路:dp数组存储每个小朋友分得多少糖果。初始化为一个。两轮遍历。第一轮遍历从角标1开始,判断该数是否比左边的数大,是则将dp[i]赋值为dp[i-1]+1,否则跳过。第二轮从倒数第二个元素开始,判断该数是否比右边的数大同时dp[i]<=dp[i+1],是则将dp[i]赋值为dp[i+1]+1,否则跳过。然后
对dp累加即可。
public int candy (int[] ratings) {
// write code here
int[] dp = new int[ratings.length];
Arrays.fill(dp,1);
int res = 0;
for(int i = 1;i<dp.length;i++){
if(ratings[i]>ratings[i-1]) dp[i] = dp[i-1]+1;
}
for(int i = dp.length-2;i>=0;i--){
if(ratings[i]>ratings[i+1] && dp[i]<=dp[i+1]) dp[i] = dp[i+1]+1;
}
for(int num : dp) res+=num;
return res;
}