码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode做题笔记135. 分发糖果


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

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

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

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

    思路一:模拟题意

    1. int candy(int *ratings, int ratingsSize)
    2. {
    3. int ret = 1, inc = 1, dec = 0, pre = 1;
    4. for (int i = 1; i < ratingsSize; i++) // 由于第0个孩子已赋初值,故从第1个孩子开始遍历
    5. if (ratings[i] >= ratings[i - 1]) // 递增数列和两元素相等可同时处理,只需在下面加一个判断即可
    6. {
    7. dec = 0; // 前方递减序列长度为0
    8. pre = (ratings[i] == ratings[i - 1]) ? 1 : pre + 1; // 若相邻两孩子评分相同,则只给当前孩子1个糖果,否则比前一个多1
    9. ret += pre; // 累加当前糖果数
    10. inc = pre; // 递增数列恰好从1开始递增,故inc = pre
    11. }
    12. else
    13. {
    14. dec++; // 递减数列长度+1:由于初始dec = 0,故此时dec恰好为当前递减数列长度
    15. if (dec == inc) // 递增数列长度 = 递减数列长度
    16. dec++; // 递减数列长度+1,将前方最近递增序列末尾元素归并入递减序列
    17. ret += dec; // 递减序列中的每一个元素均+1,共+dec
    18. pre = 1; // 递减数列当前(末尾)元素糖果数为1
    19. }
    20. return ret;
    21. }

    分析:

    本题要求需要准备的最少糖果数目,理解题意可以知道每个孩子向左右两边满足递减的要求,可以编写一个for循环,判断是否为一个递增数列,分别从两边不断向另一边求得最大值,最后将所有的数总和输出即可解决

    总结:

    本题考察对数组的应用,理解题意并想到两边分别向另一边求递增数列即可解决

  • 相关阅读:
    【python】eval函数
    【信号调理】ADC保护电路/ADC缓冲器
    Android10 修改开发者选项中动画缩放默认值
    7-VMware Horizon 2203 虚拟桌面-事件数据库配置(七)
    JDK下载和配置环境变量
    植入“人工心脏”助患者重获“心”生
    haproxyhttp和https同源代理配置步骤
    掌握 Web3 的关键工具:9大宝藏APP助你玩转区块链
    前端基础之《Bootstrap(10)—CSS组件_媒体对象、列表组、面板》
    原来 GitHub 不仅能学代码,还有这些东西
  • 原文地址:https://blog.csdn.net/si_mple_/article/details/132839715
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号