有N个小孩站成一列。每个小孩有一个评级。按照以下要求,给小孩分糖果:
1、 每个小孩至少得到一颗糖果。
2、 评级越高的小孩可以比他相邻的两个小孩得到更多的糖果。
写一个函数计算需最少准备多少糖果?
格式:
输入第一行依次输入代表小孩评级的数组,最后依次需要准备最少的糖果的数量。
样例输入
[1, 2]
[1, 1, 1]
[1, 2, 2]
[3, 4, 2, 1, 1]
样例输出
3
3
4
8
思路:先全部置1,然后从左到右遍历,当前级别比左边大,当前值就赋值为左边值+1。再从右到左遍历,比右边级别大,当前值就为max(当前值,右边值+1)。
iOS代码示例:
-(NSInteger)CentCandy:(NSString *)inputStr {
NSArray *strs = [[inputStrstringByReplacingOccurrencesOfString:@" "withString:@""]componentsSeparatedByString:@","];
NSMutableArray *values = [NSMutableArrayarrayWithCapacity