135. 分发糖果
135. 分发糖果
class Solution:def candy(self, ratings: List[int]) -> int:# 初始值n = ans = len(ratings)i = 0while i < n :# 从start开始,如果i>0且数组此时递增,则从前一位算起# 否则从当前i算起start = i-1 if i > 0 and ratings[i] > ratings[i-1] else i # 严格递增区间while i + 1 < n and ratings[i+1] > ratings[i]:i += 1top = i # 严格递减区间while i + 1 < n and ratings[i+1] < ratings[i]:i+=1inc = top -startdec = i-top# 递增/减段的额外糖果(等差数列求和)+峰顶的额外糖果(保证满足左右两侧)ans += ((inc-1)*inc + dec*(dec-1))//2 +max(inc,dec)i+= 1return ans
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/239064.html
如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!