题解 | #分糖果问题#

分糖果问题

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
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务