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. 分发糖果 【每日一题】相关推荐

  1. 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)

    看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...

  2. 贪心 135. 分发糖果

    135. 分发糖果 难度困难1086 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩 ...

  3. 135. 分发糖果(困难)-贪心

    一.题目描述 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩子评分更高的孩子会获得更 ...

  4. 135. 分发糖果(贪心算法)

    老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 评分更高的孩子必须 ...

  5. 135. 分发糖果002(贪心算法+思路+详解)

    一:题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 评分更高 ...

  6. leetcode 135. 分发糖果

    老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩子中,评分 ...

  7. LeetCode 135. 分发糖果(DP)

    1. 题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的 ...

  8. LeetCode 135 分发糖果

    题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先 给他们评分.你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果. 相邻的孩子 ...

  9. LeetCode 135. 分发糖果(贪心算法)

    题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...

最新文章

  1. System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found
  2. CSS有效的编写代码
  3. 前端三十五:图片的基本概念
  4. 16位汇编 在代码段中使用栈
  5. android tcp socket框架_socket网络编程知识梳理,让你学会造轮子的能力
  6. 白噪声检测_科学家尝试用智能扬声器的白噪声来监测婴儿的呼吸运动
  7. 信息传递(NOIP2015提高组Day1T2)
  8. Tiff – 比较两种字体差异
  9. lg按键手机java游戏_03 对于j2me(JAVA手机)的怀念——jar游戏软件合集(824MB)
  10. php barcode设置黑条宽度,JsBarcode常用参数设置
  11. php变量控制结构与函数,LAMP兄弟连原创视频教程(PHP笔记一--变量,流程控制结构,函数)...
  12. apache php gd,lanp(linux+apache+gd库+php)的安装
  13. 敏感词过滤及反垃圾文本的相关知识(欢迎收藏)
  14. Bug 20186278 - crfclust.bdb Becomes Huge Size Due to Sudden Retention Change (文档 ID 20186278.8)
  15. 鸥玛软件在深交所创业板挂牌上市,系山东大学间接控股企业
  16. 单节点部署gpmall商城系统
  17. 合阔智云核心生产系统切换到服务网格 ASM 的落地实践
  18. python3发起一个http请求
  19. etcd 本机手动测试集群及 member 操作
  20. 计算机二级考试模拟软件 操作流程

热门文章

  1. 英飞凌会议的演讲稿件
  2. 【Go】学生教务管理系统【无界面 / 单机版】(一)
  3. Python对字典列表多维数组排序
  4. 服务器主板能配固态硬盘吗,主板没有M.2接口能使用M.2固态硬盘吗【使用方法】...
  5. 东北大学 计算机学院 转专业,东北大学本科生转专业管理办法
  6. 参加技术峰会的收获与思考
  7. Java filter中的chain.doFilter详解
  8. 回收小程序是什么?有什么特点?
  9. 操作系统原理及应用复习(第2版)大部分课后习题
  10. Merger into