题解 | #分糖果问题#
分糖果问题
http://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
package main
/**
* pick candy
* @param arr int整型一维数组 the array
* @return int整型
*/
func candy(arr []int) int {
if len(arr) <= 1 {
return len(arr)
}
res := make([]int, len(arr))
for i := 0; i < len(res); i++ {
res[i] = 1
}
// 右边比左边大
for i := 1; i < len(arr); i++ {
if arr[i] > arr[i-1] {
res[i] = res[i-1] + 1
}
}
// 左边比右边大,但糖果数却更少
for i := len(arr) - 2; i >= 0; i-- {
if arr[i] > arr[i+1] && res[i] <= res[i+1] {
res[i] = res[i+1] + 1
}
}
sum := 0
for _, r := range res {
sum += r
}
return sum
}