Python-55:贪心猫的鱼干大分配

问题描述

在猫星球上,小R负责给一行排队的猫分发鱼干。每只猫有一个等级,等级越高的猫应该得到更多的鱼干。规则如下:

  1. 每只猫至少得到一斤鱼干。
  2. 如果一只猫的等级高于它相邻的猫,它就应该得到比相邻的猫更多的鱼干。

小R想知道,为了公平地满足所有猫的等级差异,他至少需要准备多少斤鱼干。

代码

def solution(n, cats_levels):

    # Please write your code here

    assert n == len(cats_levels)

    s = [1 for _ in range(n)]

    for i in range(1, n):

        if cats_levels[i] > cats_levels[i - 1]:

            s[i] = s[i-1] + 1

    for i in range(n-2,-1,-1):

        if cats_levels[i] > cats_levels[i + 1]:

            s[i] = max(s[i],s[i+1]+1)

    return sum(s)

if __name__ == "__main__":

    #  You can add more test cases here

    cats_levels1 = [1, 2, 2]

    cats_levels2 = [6, 5, 4, 3, 2, 16]

    cats_levels3 = [1, 2, 2, 3, 3, 20, 1, 2, 3, 3, 2, 1, 5, 6, 6, 5, 5, 7, 7, 4]

    print(solution(3, cats_levels1) == 4)

    print(solution(6, cats_levels2) == 17)

    print(solution(20, cats_levels3) == 35)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完成大叔

你的鼓励是创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值