一、题目描述

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

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

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

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

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

二、解题

贪心

三次遍历,从左向右遍历一次,从右向左遍历,然后保存在数组中,最后一次遍历取最大值。


class Solution {public int candy(int[] ratings) {int length = ratings.length;int[] left = new int[length];int[] right = new int[length];Arrays.fill(left,1);Arrays.fill(right,1);for(int i = 1;i<length;i++){if(ratings[i] > ratings[i-1]){left[i] = left[i-1] + 1;}}for(int i = length - 2;i>=0;i--){if(ratings[i]>ratings[i+1]){right[i] = right[i+1] + 1;}}int res = 0;for(int i = 0;i<length;i++){res += Math.max(left[i],right[i]); }return res;}
}

时间复杂度:O(n);

空间复杂度:O(n)。

135. 分发糖果(困难)-贪心相关推荐

  1. 135. 分发糖果(贪心算法)

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

  2. 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)

    看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...

  3. 贪心 135. 分发糖果

    135. 分发糖果 难度困难1086 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩 ...

  4. 135. 分发糖果 【每日一题】

    135. 分发糖果 思路 两次遍历,先从左到右计算出每个人的糖果数,这一步就是后一个比前一个大就在前一个基础上+1,不然置为1,从这个思路来来看,我们这一趟酒吧升序的给基本算好了,但是降序的我们现在全 ...

  5. 135. 分发糖果002(贪心算法+思路+详解)

    一:题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 评分更高 ...

  6. LeetCode 135. 分发糖果(贪心算法)

    题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...

  7. LeetCode算法题0:分发糖果【贪心算法】

    文章目录 前言 一.题目 二.思路详解 三.搞点实际点儿的(C++实现) 1.略显粗糙的代码实现 2.稍显精致的代码实现 3.最终的代码实现 4.提交结果 总结 前言 本文记录自己在LeetCode上 ...

  8. LeetCode 135 分发糖果

    题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先 给他们评分.你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果. 相邻的孩子 ...

  9. leetcode 135. 分发糖果

    老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩子中,评分 ...

最新文章

  1. thinkphp中data方法
  2. Impress.js教程
  3. CSS3详解:background
  4. 分析.cpp文件编译生成的汇编文件里语句的作用
  5. 两分数相乘后约分的Cantor表(洛谷P1482题题解,Java语言描述)
  6. cloud_config学习_1
  7. SQL Server 默认跟踪 -- 捕获事件详解
  8. 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
  9. Jaccard相似度和广义Jaccard相似度
  10. 从12306网站新验证码看Web验证码设计与破解
  11. 电机学(1) - 绪论
  12. VMware ESXi 6.5之前 缺少驱动处理方式
  13. java学习感想_Java学习感想
  14. Vue入门(10)axios
  15. 在linux上gc日志详解,JVM Parallel Scavenge GC日志详解
  16. 32位系统能够识别多达内存_C ++程序可打印多达N个术语的卢卡斯系列
  17. 新手学习实记(二、树莓派环境配置)
  18. CactiEZ网络流量监测图形分析
  19. 人工智能能否代替人类?
  20. matlab 极限环,ODE in MATLAB

热门文章

  1. 循环数组有几种方法?
  2. 简单说明CGI和动态请求是什么
  3. [计算机毕业设计]空谱联合的高光谱图像分类
  4. docker mysql 重置root密码
  5. Linux实战教程-专栏简介
  6. Oracle EBS AR_PAYMENT_SCHEDULES_ALL表整理
  7. 常用快递电子面单接口参数配置对照表
  8. (阅读笔记)PARE:A Simple and Strong Baseline for Monolingual and MultilingualDistantly Supervis
  9. html取消select下拉,取消下拉选项_jquery如何取消选择select下拉框
  10. 使用NPOI2.0.1.0自定义导出的excel文档数字为文本格式不能公式编辑计算的问题解决