题目:
我的解法:正向遍历+反向遍历
class Solution {
public int candy(int[] ratings) {
int n = ratings.length;
int[] left = new int[n];
for(int i=0; i<n; i++){
if(i>0 && ratings[i] > ratings[i-1]){
left[i] = left[i-1]+1;
}else{
left[i] = 1;
}
}
int ans=0, right=0;
for(int i=n-1; i>=0; i--){
if(i<n-1 && ratings[i] > ratings[i+1]){
right++;
}else{
right = 1;
}
ans+=Math.max(left[i], right);
}
return ans;
}
}
官方题解: