classSolution{publicintcandy(int[] ratings){if(ratings ==null|| ratings.length ==0){return0;}int n = ratings.length;int[] left =newint[n];//满足左规则,其实只看了从左向右递增的关系,非递增的都暂时赋值了1for(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 right =0;int res =0;for(int i = n-1; i>=0; i--){if(i < n-1&& ratings[i]>ratings[i+1]){//从右向左连续的递减会使right一直++
right++;}else{
right =1;}
res +=Math.max(left[i], right);//同时满足左规则和右规则}return res;}}