#刷题交流# day19打卡啦!在猫星球上,小R负责给一行排队的猫分发鱼干。每只猫有一个等级,等级越高的猫应该得到更多的鱼干。规则如下:
每只猫至少得到一斤鱼干。
如果一只猫的等级高于它相邻的猫,它就应该得到比相邻的猫更多的鱼干。
def solution(n:int, cats_levels:list)->int:
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__':
print(solution(n = 3, cats_levels = [1, 2, 2]) == 4)
print(solution(n = 6, cats_levels = [6, 5, 4, 3, 2, 16]) == 17)
print(solution(n = 20, cats_levels = [1, 2, 2, 3, 3, 20, 1, 2, 3, 3, 2, 1, 5, 6, 6, 5, 5, 7, 7, 4]) == 35)