LeetCode 135. 分发糖果(DP)
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)相关推荐
- leetcode 135. 分发糖果
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩子中,评分 ...
- LeetCode 135 分发糖果
题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先 给他们评分.你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果. 相邻的孩子 ...
- LeetCode 135. 分发糖果(贪心算法)
题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...
- 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)
这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右 边,如果两边一起考虑一定会顾此失彼. 先确定右边评分大于左边的情况(也就是从前向后遍历) 此时局部最优:只要右边评分 ...
- leetcode 135分发糖果
这是一道hard题,不好想,但最后还是想出来了,私以为还是根据一些思想方法自己想出来做法印象比较深刻,其次看人家的做法思想自己写代码,其次看代码理解默写,其次直接抄代码: 首先,给每个孩子都发一个糖果 ...
- 2022-4-10 Leetcode 135.分发糖果
官方题解 class Solution {public:int candy(vector<int>& ratings) {int n = ratings.size();vector ...
- 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)
看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...
- LeetCode 0135. 分发糖果
[LetMeFly]135.分发糖果 力扣题目链接:https://leetcode.cn/problems/candy/ n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. ...
- 贪心 135. 分发糖果
135. 分发糖果 难度困难1086 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩 ...
最新文章
- VS2005 和 SQL Server 2005 安装顺序不同会发生什么?
- python爬虫实例-python使用百度进行爬虫简单学习例子
- [日推荐]『车价天天报』省钱买好车
- android 先拍照后对焦,先拍照后对焦 荣耀6或搭全焦拍摄功能
- 为什么kill进程后socket一直处于FIN_WAIT_1状态
- devops .net_DevOps vs. Agile:它们有什么共同点吗?
- java 6 损坏,Java 异常处理六
- a:link a:visited a:hover a:active四种伪类选择器的区别
- rabbitmq4-工作队列及公平分发模式
- linux下Eclipse连接真机调试Android应用程序
- Tomcat9百度云下载
- 使用vlmcsd搭建KMS服务器激活环境
- java两个字符串的重复率检查
- Spring Cloud使用Dubbo实现Rpc调用失败之配置错误
- POI实现Excel模板下载
- GAMES202 笔记 -Real-Time Ray-Tracing
- 猎豹极速wifi驱动 v3.0 官方版
- 小明一家过桥,过桥时是黑夜_过桥:如何过渡到软件开发的职业
- 转载:电缆种类及选型计算
- 【CEGUI】 Window环境编译
热门文章
- 逆水寒7月19服务器维护,逆水寒7月19日更新维护公告 更新内容汇总
- java台球游戏设计原理_Java实现简单台球游戏
- mysql 优化之 is null ,is not null 索引使用测试
- leetcood学习笔记-2-两数相加
- 树莓派安装MySQL数据库与卸载
- Luogu 4244 [SHOI2008]仙人掌图
- 第一次ActiveX Fuzzing测试
- VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗
- POJ-3590 The shuffle Problem 置换+DP | DFS
- 越老越值钱,除了程序员!