当前位置: 首页 > news >正文

分发糖果(贪心算法)

题目描述

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

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

  • 每个孩子至少分配到 1 个糖果。
  • 相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

样例输入

示例 1:

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

示例 2:

输入:ratings = [1,2,2]
输出:4
解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

提示:

  • n == ratings.length
  • 1 <= n <= 2 * 104
  • 0 <= ratings[i] <= 2 * 104

题解

  • 先确定右边评分大于左边的情况
    • 只要右边评分比左边大,右边的孩子就多一个糖果。
    • 相邻的孩子中,评分高的右孩子获得比左边孩子更多的糖果
  • 确定左孩子大于右孩子的情况
    • 只要左边评分比右边大,左边的孩子就多一个糖果。
    • 此时相邻的孩子中,评分高的左孩子获得比右边孩子更多的糖果
  • 取两次tmp[i]结果的最大值,此时便可让tmp[i]比左边tmp[i - 1]的糖果多,也比右边tmp[i + 1]的糖果多

代码

class Solution {
public:int candy(vector<int>& ratings) {int n=ratings.size();if(n==1 || n==0)return n;vector<int> tmp(n,1);//从前向后遍历,右边比左边大for(int i=1;i<n;i++){if(ratings[i]>ratings[i-1])tmp[i]=tmp[i-1]+1;}//左边比右边大for(int i=n-1;i>0;i--){if(ratings[i-1]>ratings[i])tmp[i-1]=max(tmp[i-1],tmp[i]+1);}return accumulate(tmp.begin(),tmp.end(),0);}
};

相关文章:

  • VivadoAndTcl: namespace
  • 【Essential C++学习笔记】第四章 基于对象的编程风格
  • SIMULIA-Simpack 2022x新功能介绍
  • 11.16~11.19绘制图表,导入EXCEL中数据,进行拟合
  • 纯JS,RSA,AES,公钥,私钥生成及加解密
  • 基于C++实现循环赛日程表(分治算法)
  • 并发编程之生产者消费者模型
  • Golang环境搭建Win10(简洁版)
  • 栈与队列:设计循环队列
  • ModuleNotFoundError: No module named ‘pycocotools‘
  • buildadmin+tp8表格操作(3)----表头上方按钮绑定事件处理,实现功能(选中或取消指定行)
  • Excel vlookup 如何使用
  • 【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间
  • 黑马程序员微服务 分布式搜索引擎3
  • 人机交互——自然语言生成
  • 【译】JS基础算法脚本:字符串结尾
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 4个实用的微服务测试策略
  • JS函数式编程 数组部分风格 ES6版
  • Sass Day-01
  • spring security oauth2 password授权模式
  • vue 配置sass、scss全局变量
  • vue-cli3搭建项目
  • 阿里云前端周刊 - 第 26 期
  • 解决iview多表头动态更改列元素发生的错误
  • 前端工程化(Gulp、Webpack)-webpack
  • 浅谈Golang中select的用法
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 通过git安装npm私有模块
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序01:wepy框架整合iview webapp UI
  • python最赚钱的4个方向,你最心动的是哪个?
  • 带你开发类似Pokemon Go的AR游戏
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 数据结构
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)Hive调优——count distinct去重优化
  • (23)Linux的软硬连接
  • (33)STM32——485实验笔记
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二)pulsar安装在独立的docker中,python测试
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (论文阅读11/100)Fast R-CNN
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)80c52学习之旅-起始篇
  • (转)EOS中账户、钱包和密钥的关系
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .jks文件(JAVA KeyStore)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core 版本不支持的问题
  • .NET 中使用 Mutex 进行跨越进程边界的同步