1234567891011121314151617181920212223242526272829 |
- package main
- func candy(ratings []int) (sum int) {
- n := len(ratings)
- if n <= 1 {
- return n
- }
- candies := make([]int, n)
- for i := range candies {
- candies[i] = 1
- }
- for i := 1; i < n; i++ { // Forward increasing
- if ratings[i-1] < ratings[i] {
- candies[i] = candies[i-1] + 1
- }
- }
- for i := n - 1; 0 < i; i-- { // Backward increasing
- if ratings[i] < ratings[i-1] && candies[i-1] < candies[i]+1 {
- candies[i-1] = candies[i] + 1
- }
- sum += candies[i]
- }
- return sum + candies[0]
- }
- // func main() {
- // println(candy([]int{1, 0, 2}), 5)
- // println(candy([]int{1, 2, 2}), 4)
- // }
|