题解 | #分糖果问题#
分糖果问题
http://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
import java.util.*;
public class Solution {
/**
* pick candy
* @param arr int整型一维数组 the array
* @return int整型
*/
public int candy (int[] arr) {
// write code here
int[] allocate = new int[arr.length];
// 首先每人分一个
for(int i = 0; i < allocate.length; i++) {
allocate[i] = 1;
}
// 从左到右
for(int i = 1; i < allocate.length; i++) {
if(arr[i] > arr[i - 1]) {
allocate[i] = allocate[i - 1] + 1;
}
}
// 从右到左
for(int i = allocate.length - 1; i > 0; i--) {
if(arr[i - 1] > arr[i] && allocate[i - 1] <= allocate[i]) {
allocate[i - 1] = allocate[i] + 1;
}
}
// 累积
int count = 0;
for(int i = 0; i < allocate.length; i++) {
count += allocate[i];
}
return count;
}
}