《leetcode-php》糖果问题

有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
}

 

你可能感兴趣的:(leetCode-go)