题目描述

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

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

每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/candy
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

要求相邻的且评分高的孩子获得更多的糖果,遍历ratings[]数组可选择左右各遍历一次。
对于左遍历,当前孩子i需要满足ratings[i] > ratings[i - 1]时,则孩子i的糖果数量比孩子i-1多;
对于右遍历,当前孩子i需要满足ratings[i] > ratings[i + 1]时,则孩子i的糖果数量比孩子i+1多;
最后根据左右遍历的结果依次比较,取最大值,即是当前孩子i的最大糖果数量。

ACM代码–Java

import java.util.*;public class test13 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入孩子个数:");int n = sc.nextInt();int[] ratings = new int[n];for (int i = 0; i < n; i++) {ratings[i] = sc.nextInt();System.out.println(ratings[i] + " ");}System.out.println();System.out.println("最少糖果数目为: " + candy(ratings));}public static int candy(int[] ratings) {int n = ratings.length;int[] left = new int[n];for (int i = 0; i < n; i++) {if (i > 0 && ratings[i] > ratings[i - 1]) {left[i] = left[i - 1] + 1;} else {left[i] = 1;}}int right = 0, res = 0;for (int i = n - 1; i >= 0; i--) {if (i < n - 1 && ratings[i] > ratings[i + 1]) {right++;} else {right = 1;}res += Math.max(left[i], right);}return res;}
}

LeetCode135.分发糖果-Java相关推荐

  1. leetcode-135. 分发糖果

    贪心算法 分配问题 题目详情 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩子评分更 ...

  2. leetcode-135 分发糖果

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

  3. LeetCode135. 分发糖果(贪心算法)

    1 题目描述 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩子评分更高的孩子会获得更 ...

  4. 华为机试2022.4.13:分发糖果

    第三题:300分,这道题好像判题有问题吧,大家都在反馈.输出-1就是5%. 分发糖果 题目描述 老师给两个同学分糖果,每袋糖果中的数量不完全一样.一袋糖果只能分给一个人,并且一次性全分完必须.两个人分 ...

  5. 分发糖果的程序设计代码_糖果为您设计的颤动交互引擎

    分发糖果的程序设计代码 什么是糖果? (What Is Candy?) The Candy engine was designed and developed by the Xianyu techni ...

  6. 【Leetcode】135. 分发糖果

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

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

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

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

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

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

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

最新文章

  1. 更新elementui图标不显示_超简单elementui主题及变量修改方案
  2. 求2个数的最大公约数
  3. numpy创建三维空数组_numpy数组的创建和属性转换
  4. 如何打印出给定尺寸的方格_打印给定号码的表格| 8085微处理器
  5. EMC业务连续性和容灾服务
  6. Java JDBC连接Oracle,java面试题,java初级笔试题
  7. jquery的ajax异步请求接收返回json数据
  8. 学习STM32F769DK-OTA例程之APP中断向量表重映射
  9. 黑马程序员之《String Buffer,包装类》
  10. 随机森林回归树官方例子小结
  11. ARM开发软件ADS教程
  12. element el-table 在IE浏览器 表头失效问题
  13. GitHub标星8-3k的学习习惯,未来的Android高级架构师:别让这几个点毁了你
  14. 锐龙r7 4800h性能怎么样
  15. 在美国高校找教职及教学中的体会
  16. c++中如何将数组赋值给vector
  17. Spring - bean
  18. 基于DPABI的精神分裂患者脑图特征提取和统计分析
  19. vim 插入模式小技巧
  20. 天大计算机英语面试,天大考研复试英文自我介绍

热门文章

  1. 大三在校生,用了“70min”就拿到了京东20K*15的offer,你还在摸鱼?
  2. Spring——面向切面编程
  3. vivo手机助手新手使用图文教程
  4. 【GLSL教程】(六)逐顶点的光照
  5. 最全解决方式java.net.BindException Address already in use JVM_Bind
  6. 雷军做程序员时所写博客
  7. 梳理ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  8. windows2008服务器监控管理软件
  9. 读书笔记之:(1)认知驱动——周岭;第一章、第二章
  10. MySQL《多表连接操作2》