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

LeetCode 分发糖果II题解

LeetCode 分发糖果II题解

题目描述

老师要给孩子们分发糖果。但是,如果一个孩子的评分比他相邻的孩子的评分高,他必须获得比相邻孩子更多的糖果。请问老师至少要准备多少糖果?

示例

输入:ratings = [1,0,2]
输出:5

解题思路

方法:贪心

思路

  • 使用贪心算法,两次遍历。
  • 第一次从左到右遍历,确保每个孩子的糖果数比左边的孩子多。
  • 第二次从右到左遍历,确保每个孩子的糖果数比右边的孩子多。
  • 取两次遍历结果的最大值。

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。

代码实现

def candy(ratings): n = len(ratings) candies = [1] * n for i in range(1, n): if ratings[i] > ratings[i-1]: candies[i] = candies[i-1] + 1 for i in range(n-2, -1, -1): if ratings[i] > ratings[i+1]: candies[i] = max(candies[i], candies[i+1] + 1) return sum(candies) # 测试 def test_candy(): ratings = [1, 0, 2] print(candy(ratings)) # 输出:5 if __name__ == "__main__": test_candy()

总结

分发糖果II是贪心算法的典型应用,通过两次遍历来确保每个孩子的糖果数比相邻的孩子多。

http://www.rkmt.cn/news/1302078.html

相关文章:

  • 从零构建大语言模型:Transformer架构、训练技巧与实战指南
  • 嵌入式Linux开发板选型指南:Raspberry Pi、BeagleBone Black、Arduino Yun、Intel Galileo深度对比
  • 三色电子墨水屏桌面显示牌制作:从硬件组装到CircuitPython编程全流程
  • 分布式系统核心模式实践:从Raft共识到键值存储构建
  • 如何在Mac上免费读写NTFS硬盘?Nigate开源工具帮你彻底解决
  • 开源ChatGPT API替代方案:私有化部署与OpenAI兼容接口实战
  • 织物缺陷检测数据集VOC+YOLO格式2339张7类别
  • Python高性能折叠库fold:原理、应用与性能优化实践
  • Discord增强插件开发指南:从Electron原理到安全实践
  • Biomni项目解析:大语言模型与生物医学知识图谱融合实践
  • 项目八: 配置与管理FTP服务器(1) C1
  • LeetCode 单调递增的数字题解
  • MouseClick鼠标连点器:解放双手的自动化利器终极指南
  • LeetCode 字典序最小子序列题解
  • AI增强版Grep:用自然语言搜索代码的革命性工具
  • 避坑指南:MATLAB GUI换图标,为什么你的PNG或ICO总是不显示?
  • 终极指南:如何使用League-Toolkit英雄联盟工具箱快速提升游戏效率
  • AssetStudio完全指南:从Unity资源提取到专业应用的全流程教程
  • 基于Next.js与Ollama构建现代化本地AI对话Web界面
  • Pandrator:基于DAG的轻量级数据管道构建器,简化ETL与自动化流程
  • 从零构建AI智能体:核心架构、LangChain实战与生产部署指南
  • WiFi反向散射技术:低功耗物联网通信新突破
  • 从零实现极简HTTP服务器:C语言网络编程与HTTP协议核心原理剖析
  • 揭秘Midjourney“树胶重铬酸盐”风格指令:3步精准触发古典印相质感,92%用户从未用对的隐藏参数组合
  • FanControl终极指南:Windows平台风扇智能控制解决方案
  • 企业级后端四层架构实战:从理论到代码的清晰落地
  • Go语言实现Hermes引擎:高性能JavaScript字节码虚拟机解析与实践
  • AI结对编程实战:用Claude从零构建完整软件项目
  • TranslucentTB启动失败终极解决方案:完整修复与优化指南
  • 探索下一代命令行界面:OpenCLI 架构设计与插件化实践