老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。

你需要按照以下要求,帮助老师给这些孩子分发糖果:

每个孩子至少分配到 1 个糖果。
相邻的孩子中,评分高的孩子必须获得更多的糖果。
那么这样下来,老师至少需要准备多少颗糖果呢?

示例 1:

输入: [1,0,2]
输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。

代码

class Solution {public int candy(int[] ratings) {int n=ratings.length;int[] cnt=new int[n];Arrays.fill(cnt,1);//所有人都发一颗boolean change=true;while (change)//直到每个孩子的糖果数量不再需要调整{change=false;for(int i=0;i<n;i++){if(i-1>=0&&ratings[i]>ratings[i-1]&&cnt[i]<=cnt[i-1])//检查左边孩子的分数和糖数是否符合要求,调整当前孩子的糖果数量,使得满足要求{change=true;cnt[i]=cnt[i-1]+1;}if(i+1<n&&ratings[i]>ratings[i+1]&&cnt[i]<=cnt[i+1])//检查右边孩子的分数和糖数是否符合要求,调整当前孩子的糖果数量,使得满足要求{change=true;cnt[i]=cnt[i+1]+1;}}}int res=0;for(int i=0;i<n;i++)res+=cnt[i];return res;}
}

leetcode 135. 分发糖果相关推荐

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

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

  2. LeetCode 135 分发糖果

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

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

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

  4. 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)

    这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右 边,如果两边一起考虑一定会顾此失彼. 先确定右边评分大于左边的情况(也就是从前向后遍历) 此时局部最优:只要右边评分 ...

  5. leetcode 135分发糖果

    这是一道hard题,不好想,但最后还是想出来了,私以为还是根据一些思想方法自己想出来做法印象比较深刻,其次看人家的做法思想自己写代码,其次看代码理解默写,其次直接抄代码: 首先,给每个孩子都发一个糖果 ...

  6. 2022-4-10 Leetcode 135.分发糖果

    官方题解 class Solution {public:int candy(vector<int>& ratings) {int n = ratings.size();vector ...

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

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

  8. LeetCode 0135. 分发糖果

    [LetMeFly]135.分发糖果 力扣题目链接:https://leetcode.cn/problems/candy/ n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. ...

  9. 贪心 135. 分发糖果

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

最新文章

  1. kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!
  2. 完美解决Python与anaconda之间的冲突问题,你值得拥有
  3. 渲染完毕再渲染数据_三星Galaxy S21渲染图再曝:多种配色、新设计
  4. mybatis------通过mapper接口加载映射文件(六)
  5. 回归即登顶社交应用排行榜,多牛传媒开启人人“第二春”
  6. 关于结合测试时,数据准备的一些注意点 (之开始篇:如何能更快,更好的准备测试数据)。
  7. Keras实现text classification文本二分类
  8. 正射影像、倾斜摄影测量相关软件汇总
  9. 维宏控制卡win7 驱动_雕刻机专用维宏5.55运动驱动控制卡
  10. 【历史上的今天】5 月 15 日:Mozilla 发布 Rust;起点中文网成立;Windows 启动音乐设计者出生
  11. android手机平板如何使用usb有线网卡
  12. c++ Lake Counting
  13. 网络中国象棋对战中象棋的规则以及棋盘、棋子的Java源码
  14. 如何科学化、系统化的构建行业舆情模型(关键词方案)
  15. 分析QQ微信使用的是UDP还是TCP协议
  16. lftp的使用以及常见的指令
  17. 尚硅谷--尚品汇项目笔记
  18. PowerBuilder 开发的游戏(扫雷)
  19. Kali 使用nmap命令进行局域网扫描
  20. 详解红黑树之左旋右旋

热门文章

  1. sys/queue.h分析(图片复制不过来,查看原文)
  2. Java高级工程师面试实战,mysqlsettimeout
  3. matlab确定位置,Hurlin 的PSTR模型包,怎样确定位置参数个数
  4. 在layui中使用 jquery 触发select 的 change事件无效
  5. ios高级开发之多线程(一)
  6. 为mysql数据库建立索引
  7. 在UITouch事件中画圆圈-iOS8 Swift基础教程
  8. fastq-dump 报错 解决方案
  9. [转]带花树,Edmonds's matching algorithm,一般图最大匹配
  10. 常见算法及问题场景——图