LeetCode-135.分发糖果、贪心算法

2023-11-12

老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
你需要按照以下要求,帮助老师给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。
相邻的孩子中,评分高的孩子必须获得更多的糖果。
那么这样下来,老师至少需要准备多少颗糖果呢?
示例 1:
输入: [1,0,2]
输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
示例 2:
输入: [1,2,2]
输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,这已满足上述两个条件。
来源:力扣(LeetCode)

解题思路

①.初始一人分一个
②.先从左到右遍历一遍,每个人只和他左边的人比较,只要分数比左边人高,分到的糖果就比左边多一个
③.然后再从右到左遍历一遍,每个人只和他右边的人比较,只有分数比右边人高,分到的糖果就比右边多一个
④.每个人的糖果数在两次遍历后取最大值,即可以满足只要分数比相邻两边高则糖果就最多

题目只要求了分数高的获得更多的糖果,反之并不成立。

代码示例

class Solution {
public:
    int candy(vector<int>& ratings) {
        int size = ratings.size();
        vector<int> result(size,1);//初始一人给一个先
        for(int i = 1;i < size;++i)
        {
            if( ratings[i] > ratings[i-1] )//右边的人分数高于左边
                result[i] = result[i-1] +1;//确保比右边人至少多一个
        }
        for(int i = size-2;i >= 0 ;--i)
        {
            if( ratings[i] > ratings[i+1] )//左边的人分数高于右边
                result[i] = max(result[i],result[i+1]+1);//确保比左边人至少多一个
        }
        return accumulate(result.begin(),result.end(),0);
    }
};

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode-135.分发糖果、贪心算法 的相关文章

随机推荐

  • rand()的最大值

    rand 函数是一个在开发的时候比较常用的函数 但这个函数返回随机数的取值范围并非多大的值都可以 在工作修一个抽奖活动bug的时候曾经遇到这样一种情况 当总权重大于rand的最大值2 16 32767的时候 rand返回的值将不会大于327
  • vue element插件this.$confirm用法(取消也可以发请求)

    场景 弹出框的两个按钮都能分别请求接口 最简单的弹出框就是 确定 取消 一般用户点击确定才会继续接下来的动作 点击取消则不做任何动作 即不会请求接口 如
  • Chromium OS初体验 就是一款Linux

    好奇 弄了一个Chromium OS for VMWare 玩玩 发现Chromium OS并非像我之前想象的一样 并非完全是一个自主研发的独立操作系统 启动 Chromium OS 时 vmware 被设置成图形模式 但一片漆黑什么都看不
  • 【OpenCV】Blob斑点检测学习笔记

    设置 SimpleBlobDetector 参数 params cv2 SimpleBlobDetector Parms 改变阈值 params minThreshold 自定义下阈值 params maxThreshold 自定义上阈值
  • stm32实现Systick的毫秒级延时和微妙级延时

    学习目标 stm32实现Systick的毫秒级延时和微妙级延时 学习内容 1 Systick 工作原理 Systick 系统定时器 是ARM Cortex M3 M4 内核的一个外设 因为所有的CM3 M4内核的单片机都带有这个定时器 这使
  • 若依微服务增强swagger增强集成knife4j

    1 项目pom xml中增加
  • iOS音视频—Shell脚本语言(语法-字符串)

    In every walk with nature one receives far more than he seeks 每一次和自然同行 都会有意外的收货 Shell脚本语言 语法 字符串 1 单引号 name wt echo name
  • 代码随想录算法训练营19期第37天

    738 单调递增的数字 代码随想录 初步思路 贪心 总结 还需要考虑遍历顺序 只有从后向前遍历才能重复利用上次比较的结果先排序 用时 45分钟 968 监控二叉树 代码随想录 初步思路 仅仅贪心好像还是不够 总结 二刷三刷再来 用时 60分
  • 【智领信创】用友 U8 cloud &亚信科技 AntDB联合产品强势来袭,0元购活动惠及陕、鲁

    近日 用友U8 cloud信创云ERP新品体验会在西安 济宁两市成功举办 用友U8 cloud 亚信科技AntDB联合产品精彩亮相 为陕 鲁两省行业客户提供领先信创解决方案的同时 也为两省客户带来极具诚意的优惠方案 U8 cloud Ant
  • 连接阿里云服务器MySql数据库

    首先先说一个坑 也是自己很久没有使用linux原因导致的 自己也是的 最近忙于工作 买了阿里云服务器之后一直都没有去弄了 感觉自己白花钱了 废话不多说了 直接进入正题 第一 肯定要看你的mysql数据库是否启动 才能确定是否能够连接 一下有
  • Outlook 突然打不开

    打开电脑正准备上班然后outlook崩了 报错建议我重装软件 问题是现在用的都是365全家桶 也没办法单独重装一个outlook 盲试了一把repair居然修好了 再后来就经常用到它T T 不是什么好事 首先有几种临时解决方法 如果时间很紧
  • mysql配置超详细教程_MySQL系列(一):超详细、非常适合入门的MySQL安装、环境配置教程...

    MySQL系列教程不定期更新 欢迎关注 一 安装环境 Windows 10 专业版 64位 二 下载MySQL 1 访问MySQL官网 网址为 http www mysql com 2 点击页面上方的 DOWMLOADS 3 选择 MySQ
  • 苹果全新iPhone首发3nm自研芯片,结果“华为发布会”冲上热搜第一…

    明敏 丰色 西风 发自 凹非寺量子位 公众号 QbitAI 就离谱 苹果发iPhone 15 结果发着发着 华为发布会 冲上了热搜第一 哪怕是iPhone 15全系告别11年闪电接口改用USB C 经典静音键从Pro系列消失 这些库克 违背
  • Android性能优化—内存优化

    一 App内存组成以及管理 Android 给每个 App 分配一个 VM 让App运行在 dalvik 上 这样即使 App 崩溃也不会影响到系统 系统给 VM 分配了一定的内存大小 App 可以申请使用的内存大小不能超过此硬性逻辑限制
  • 机器学习中关于偏差、方差和误差的理解

    在模型预测中 模型可能出现的误差来自两个主要来源 1 因模型无法表示基本数据的复杂度而造成的偏差 bias 2 因模型对训练它所用的有限数据过度敏感而造成的方差 variance 误差是测量值与真实值之间的差值 用误差衡量测量结果的准确度
  • Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file)

    org pentaho di core exception KettleDatabaseException Error occurred while trying to connect to the database Driver clas
  • [培训-无线通信基础-6]:信道编码(分组码、卷积吗、Polar码、LDPC码、Turbo码)

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 118657107 目录 前言
  • Shell计算时间运行时间

    方法1 starttime date Y m d H M S 执行程序 endtime date Y m d H M S start seconds date date starttime s end seconds date date e
  • 笔试

    文章目录 前言 21 FPGA组成三要素 1 CLB 2 可编程内部互联资源 3 可编程输入输出块 22 查找表 LUT 23 锁存器 latch 触发器 24 亚稳态 25 逻辑电平 26 逻辑最小项 总结 往期精彩 前言 本文首发于微信
  • LeetCode-135.分发糖果、贪心算法

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