博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 135.Candy (分发糖果)
阅读量:2179 次
发布时间:2019-05-01

本文共 926 字,大约阅读时间需要 3 分钟。

题目描述:

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

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

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

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

示例 1:

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

示例 2:

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

 

 

AC  C++  Solution:

通过两次遍历,一次遍历比较前一个元素,一次遍历比较后一个元素。

class Solution {public:    int candy(vector
& ratings) { int size = ratings.size(); if(size <= 1) return size; vector
num(size,1); for(int i = 1; i < size; i++) { //正序比较 if(ratings[i] > ratings[i-1]) num[i] = num[i-1] + 1; } for(int i = size-1; i > 0; i--) { //逆序比较 if(ratings[i-1] > ratings[i]) num[i-1] = max(num[i]+1,num[i-1]); } int result = 0; for(auto i : num) result += i; return result; }};

 

 

 

 

 

 

 

 

 

 

转载地址:http://agnkb.baihongyu.com/

你可能感兴趣的文章
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
如何应用 BERT :Bidirectional Encoder Representations from Transformers
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
强化学习第1课:像学自行车一样的强化学习
查看>>
强化学习第2课:强化学习,监督式学习,非监督式学习的区别
查看>>
强化学习第3课:有些问题就像个赌局
查看>>
强化学习第4课:这些都可以抽象为一个决策过程
查看>>
强化学习第5课:什么是马尔科夫决策过程
查看>>
强化学习第6课:什么是 Crossentropy 方法
查看>>
强化学习第7课:交叉熵方法的一些局限性
查看>>
强化学习 8: approximate reinforcement learning
查看>>
图解什么是 Transformer
查看>>
代码实例:如何使用 TensorFlow 2.0 Preview
查看>>
6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现
查看>>
走进JavaWeb技术世界1:JavaWeb的由来和基础知识
查看>>
走进JavaWeb技术世界2:JSP与Servlet的曾经与现在
查看>>
走进JavaWeb技术世界3:JDBC的进化与连接池技术
查看>>