135. 分发糖果 【每日一题】
135. 分发糖果
思路
两次遍历,先从左到右计算出每个人的糖果数,这一步就是后一个比前一个大就在前一个基础上+1,不然置为1,从这个思路来来看,我们这一趟酒吧升序的给基本算好了,但是降序的我们现在全是1。
我们就从右到左遍历一次,这一次,前一个比后一个大,就在后一个的基础上+1,否则就是置1,然后得到从后往前的一个升序的糖果数(对于从前往后就是降序),
最后在求和的时候,糖果数取两者中大的就行了,在实际代码中,我简化了一下,在从后往前遍历的时候直接就开始计算求和了,当然你也可以用一个数组存从后往前的,然后依次遍历求和
class Solution:def candy(self, ratings: List[int]) -> int:left =[1]*len(ratings)for i in range(1,len(ratings)): # 从第二个开始if ratings[i]>ratings[i-1]:left[i]=left[i-1]+1right = 1 # 最后一个初始化为1ans = max(left[-1],right) # 初始值最后一个位置上left 和right 的大值for j in range(len(ratings)-2,-1,-1): # 倒数第二个(len(ratings)-2)开始,到第一个(0),为啥代码是-1时因为range是左闭右开 [len(ratings)-2,-1)if ratings[j]>ratings[j+1]:right += 1else:right=1ans += max(left[j],right)return ans
这个是没有压缩优化的,就按着思路一步一步写的
class Solution:def candy(self, ratings: List[int]) -> int:left =[1]*len(ratings)for i in range(1,len(ratings)):if ratings[i]>ratings[i-1]:left[i]=left[i-1]+1right = [1]*len(ratings) for j in range(len(ratings)-2,-1,-1): # 倒数第二个(len(ratings)-2)开始,到第一个(0),为啥代码是-1时因为range是左闭右开 [len(ratings)-2,-1)if ratings[j]>ratings[j+1]:right[j] = right[j+1] + 1ans = 0for k in range(len(ratings)):ans += max(left[k],right[k])return ans
135. 分发糖果 【每日一题】相关推荐
- 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)
看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...
- 贪心 135. 分发糖果
135. 分发糖果 难度困难1086 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩 ...
- 135. 分发糖果(困难)-贪心
一.题目描述 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩子评分更高的孩子会获得更 ...
- 135. 分发糖果(贪心算法)
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 评分更高的孩子必须 ...
- 135. 分发糖果002(贪心算法+思路+详解)
一:题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 评分更高 ...
- leetcode 135. 分发糖果
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩子中,评分 ...
- LeetCode 135. 分发糖果(DP)
1. 题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的 ...
- LeetCode 135 分发糖果
题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先 给他们评分.你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果. 相邻的孩子 ...
- LeetCode 135. 分发糖果(贪心算法)
题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...
最新文章
- System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found
- CSS有效的编写代码
- 前端三十五:图片的基本概念
- 16位汇编 在代码段中使用栈
- android tcp socket框架_socket网络编程知识梳理,让你学会造轮子的能力
- 白噪声检测_科学家尝试用智能扬声器的白噪声来监测婴儿的呼吸运动
- 信息传递(NOIP2015提高组Day1T2)
- Tiff – 比较两种字体差异
- lg按键手机java游戏_03 对于j2me(JAVA手机)的怀念——jar游戏软件合集(824MB)
- php barcode设置黑条宽度,JsBarcode常用参数设置
- php变量控制结构与函数,LAMP兄弟连原创视频教程(PHP笔记一--变量,流程控制结构,函数)...
- apache php gd,lanp(linux+apache+gd库+php)的安装
- 敏感词过滤及反垃圾文本的相关知识(欢迎收藏)
- Bug 20186278 - crfclust.bdb Becomes Huge Size Due to Sudden Retention Change (文档 ID 20186278.8)
- 鸥玛软件在深交所创业板挂牌上市,系山东大学间接控股企业
- 单节点部署gpmall商城系统
- 合阔智云核心生产系统切换到服务网格 ASM 的落地实践
- python3发起一个http请求
- etcd 本机手动测试集群及 member 操作
- 计算机二级考试模拟软件 操作流程