package leecode; import org.junit.Test; /** * Created by root on 17-6-15. */ public class Candy { //1 3 3 5 4 3 2 1 //1 1 1 1 1 1 1 1 //1 2 1 2 1 1 1 1 //1 2 1 5 4 3 2 1 /* 从左往右扫一边,右边大+1 从右往左扫一边,左边大=Max(左,右+1) */ public int candy(int[] ratings) { int[] rate=new int[ratings.length]; for(int i=0;i<rate.length;i++){ rate[i]=1; } for(int i=1;i<ratings.length;i++){ if(ratings[i]>ratings[i-1]){ rate[i]=rate[i-1]+1; } } for(int i=ratings.length-2;i>=0;i--){ if(ratings[i]>ratings[i+1]){ rate[i]=Math.max(rate[i],rate[i+1]+1); } } int sum=0; for(int i:rate){ sum+=i; } return sum; } @Test public void test(){ int[] a={1,3,3,5,4,3,2,1}; System.out.println(candy(a)); } }