思路:
从左至右扫描,如果紧挨着的左 >右 就将左++
同理,从右至左 若相邻右> 左 则右++
最后一人再分一个
算法实现如下:
public static int dispatchCandies(int[] a){
int sum = 0;
int[] b = new int[a.length];//每人的分到的糖果数组
for (int i = 1; i< a.length; i++){
if(a[i-1] > a[i]){
b[i-1] ++;
}
}
for (int j = a.length -1; j>0; j--){
if (a[j] > a[j-1] ){
b[j]++;
}
}
for (int i = 0; i < b.length; i++){
sum += b[i];
}
return sum + a.length;//每人再分一个
}