135. 分发糖果

题目链接 135. 分发糖果
思路 动态规划
题解链接 动态规划,计算最长递减序列
关键点 识别出:发放的糖果的数量实质上需要找到“最长递增子串”的长度
时间复杂度 O(n)
空间复杂度 O(n)

代码实现:

class Solution:
def candy(self, ratings: List[int]) -> int:
n = len(ratings)
dp_left = [1] * n
dp_right = [1] * n
for i in range(1, n):
if ratings[i] > ratings[i-1]:
dp_left[i] = dp_left[i-1] + 1
else:
dp_left[i] = 1
if ratings[n-1-i] > ratings[n-i]:
dp_right[n-1-i] = dp_right[n-i] + 1
else:
dp_right[n-1-i] = 1
answer = sum(max(left, right) for left, right in zip(dp_left, dp_right))
return answer
posted @   WrRan  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示