|
@@ -1,9 +1,29 @@
|
|
|
package main
|
|
|
|
|
|
-func candy(ratings []int) int {
|
|
|
- return 0
|
|
|
+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() {
|
|
|
-
|
|
|
-}
|
|
|
+// func main() {
|
|
|
+// println(candy([]int{1, 0, 2}), 5)
|
|
|
+// println(candy([]int{1, 2, 2}), 4)
|
|
|
+// }
|