1. 题目

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

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

  • 每个孩子至少分配到 1 个糖果。
  • 相邻的孩子中,评分高的孩子必须获得更多的糖果。

那么这样下来,老师至少需要准备多少颗糖果呢?

示例 1:
输入: [1,0,2]
输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:
输入: [1,2,2]
输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这已满足上述两个条件。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/candy
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 正反遍历,分别考虑左边和右边
  • 最后取两者的较大者
class Solution { // C++
public:int candy(vector<int>& ratings) {int i, j, n = ratings.size(), sum = 0;vector<int> dp(n,1);for(i = 1, j = n-2; i < n && j >= 0; ++i,--j){if(ratings[i] > ratings[i-1])dp[i] = max(dp[i], dp[i-1]+1);else if(ratings[i] == ratings[i-1])dp[i] = max(dp[i], dp[i-1]);if(ratings[j] > ratings[j+1])dp[j] = max(dp[j], dp[j+1]+1);else if(ratings[j] == ratings[j+1])dp[j] = max(dp[j], dp[j+1]);}for(i = 0; i < n; ++i)sum += dp[i];return sum;}
};

44 ms 17.1 MB

LeetCode 135. 分发糖果(DP)相关推荐

  1. leetcode 135. 分发糖果

    老师想给孩子们分发糖果,有 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. VS2005 和 SQL Server 2005 安装顺序不同会发生什么?
  2. python爬虫实例-python使用百度进行爬虫简单学习例子
  3. [日推荐]『车价天天报』省钱买好车
  4. android 先拍照后对焦,先拍照后对焦 荣耀6或搭全焦拍摄功能
  5. 为什么kill进程后socket一直处于FIN_WAIT_1状态
  6. devops .net_DevOps vs. Agile:它们有什么共同点吗?
  7. java 6 损坏,Java 异常处理六
  8. a:link a:visited a:hover a:active四种伪类选择器的区别
  9. rabbitmq4-工作队列及公平分发模式
  10. linux下Eclipse连接真机调试Android应用程序
  11. Tomcat9百度云下载
  12. 使用vlmcsd搭建KMS服务器激活环境
  13. java两个字符串的重复率检查
  14. Spring Cloud使用Dubbo实现Rpc调用失败之配置错误
  15. POI实现Excel模板下载
  16. GAMES202 笔记 -Real-Time Ray-Tracing
  17. 猎豹极速wifi驱动 v3.0 官方版
  18. 小明一家过桥,过桥时是黑夜_过桥:如何过渡到软件开发的职业
  19. 转载:电缆种类及选型计算
  20. 【CEGUI】 Window环境编译

热门文章

  1. 逆水寒7月19服务器维护,逆水寒7月19日更新维护公告 更新内容汇总
  2. java台球游戏设计原理_Java实现简单台球游戏
  3. mysql 优化之 is null ,is not null 索引使用测试
  4. leetcood学习笔记-2-两数相加
  5. 树莓派安装MySQL数据库与卸载
  6. Luogu 4244 [SHOI2008]仙人掌图
  7. 第一次ActiveX Fuzzing测试
  8. VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗
  9. POJ-3590 The shuffle Problem 置换+DP | DFS
  10. 越老越值钱,除了程序员!