有N个小朋友站在一排,每个小朋友都有一个评分
你现在要按以下的规则给孩子们分糖果:
- 每个小朋友至少要分得一颗糖果
- 分数高的小朋友要他比旁边得分低的小朋友分得的糖果多
你最少要分发多少颗糖果?
注意,比较糖果数量的时候,等于也不行
package main
/**
*
* @param ratings int整型一维数组
* @return int整型
*/
func candy( ratings []int ) int {
// write code here
num := len(ratings)
if num == 0 {
return 0
}
candy := make([]int, num)
candy[0] = 1
for i := 1; i < num; i++ {
if ratings[i] > ratings[i-1] {
candy[i] = candy[i-1] + 1
} else {
candy[i] = 1
}
}
for i := num - 1; i > 0; i-- {
if ratings[i] < ratings[i-1] && candy[i] >= candy[i-1] {
candy[i-1] = candy[i] + 1
}
}
var ret int
for _, cnt := range candy {
ret += cnt
}
return ret
}