这道题的贪心策略在于,不要一次考虑两边的情况,而要一次考虑一边
先从左到右考虑一遍,在从右到左来一遍就可以了
class Solution {
public int candy(int[] ratings) {
int num=0;
int[] can=new int[ratings.length];
can[0]=1;
for (int i=1;i<ratings.length;i++){
if (ratings[i]>ratings[i-1])
can[i]=can[i-1]+1;
else can[i]=1;
}
for (int i=ratings.length-2;i>=0;i--){
if (ratings[i]>ratings[i+1]){
can[i]=Math.max(can[i+1]+1,can[i]);
}
num+=can[i];
}
num+=can[can.length-1];
return num;
}
}