题解 | #派分糖果#

派分糖果

https://www.nowcoder.com/practice/68ab121e08c5458fac5a22ec9964301a

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "strconv"
)

func main() {
    sc := bufio.NewScanner(os.Stdin)

    for sc.Scan() {
        strs := strings.Split(sc.Text(), ",")
        arr := make([]int, 0, len(strs))
        var number int
        for _, str := range strs {
            number, _ = strconv.Atoi(str)
            arr = append(arr, number)
        }

        fmt.Println(dispatchCandy(arr))
    }
}

func dispatchCandy(arr []int) int {
    dp := make([]int, len(arr))
    // 至少分得一个
    for i := range dp {
        dp[i] = 1
    }
    // 分两个方向考虑,不然顾此失彼
    // 从前往后,找分数比左邻居高
    for i := 1; i < len(arr); i++ {
        if arr[i] > arr[i-1] && dp[i] <= dp[i-1] {
            dp[i] = dp[i-1]+1
        }
    }
    // 从后往前,找分数比右邻居高
    for j := len(arr)-2; j >= 0; j-- {
        if arr[j] > arr[j+1] && dp[j] <= dp[j+1] {
            dp[j] = dp[j+1]+1
        }
    }

    sum := 0
    for _, v := range dp {
        sum += v
    }
    return sum
}

全部评论

相关推荐

06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务