代码:
两个数组 l、r 分别记录左递增子序列长度和右递增子序列长度 发的糖果数等于两边较大值
class Solution {
public int candy(int[] ratings) {
int n = ratings.length;
int[] l = new int[n];
int[] r = new int[n];
for(int i=0;i<n;i++){
if(i-1>=0&&ratings[i]>ratings[i-1]){
l[i] = l[i-1]+1;
}else{
l[i] = 1;
}
}
for(int i=n-1;i>=0;i--){
if(i+1<n&&ratings[i]>ratings[i+1]){
r[i] = r[i+1]+1;
}else{
r[i] = 1;
}
}
int cnt = 0;
for(int i=0;i<n;i++){
cnt+=Math.max(l[i],r[i]);
}
return cnt;
}
}