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

专门做设计的一个网站百度知道小程序

专门做设计的一个网站,百度知道小程序,网页搜索栏隐藏了,商务推广是什么意思❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣!

  • 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注
    在这里插入图片描述

  • 导航

    • LeetCode解锁1000题: 打怪升级之旅:每题都包括3-5种算法,以及详细的代码实现,刷题面试跳槽必备
    • 漫画版算法详解:通过漫画的形式和动态GIF图片把复杂的算法每一步进行详细可视解读,看一遍就掌握
    • python源码解读:解读python的源代码与调用关系,快速提升代码质量
    • python数据分析可视化:企业实战案例:企业级数据分析案例与可视化,提升数据分析思维和可视化能力
    • 程序员必备的数学知识与应用:全面详细的介绍了工程师都必备的数学知识

期待与您一起探索技术、持续学习、一步步打怪升级 欢迎订阅本专栏❤️❤️

题目描述

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

  1. 每个孩子至少分到一个糖果。
  2. 评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。

你需要最少准备多少糖果。

示例 1:

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

示例 2:

输入: [1,2,2]
输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题目要求。

方法一:两次遍历法

解题步骤

  1. 创建一个糖果数组,初始化每个孩子的糖果数为 1。
  2. 从左到右遍历,如果当前孩子的评分高于前一个孩子,则当前孩子的糖果数设置为前一个孩子的糖果数加一。
  3. 从右到左遍历,如果当前孩子的评分高于后一个孩子,并且当前孩子的糖果数不大于后一个孩子的糖果数,则当前孩子的糖果数设置为后一个孩子的糖果数加一。
  4. 返回糖果数组的总和。

Python 示例

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] and candies[i] <= candies[i + 1]:candies[i] = candies[i + 1] + 1return sum(candies)# Example usage
ratings = [1, 0, 2]
print(candy(ratings))  # Output: 5ratings = [1, 2, 2]
print(candy(ratings))  # Output: 4

算法分析

  • 时间复杂度:O(N),其中 N 是孩子的数量。需要遍历两次数组。
  • 空间复杂度:O(N),用于存储糖果数量的数组。

算法图解与说明

考虑 ratings = [1, 0, 2]初始化糖果数组:candies = [1, 1, 1]左到右遍历:
索引1: 1 (评分 0) <= 0 (评分 1), 无变化
索引2: 2 (评分 2) > 0 (评分 0), 更新 candies[2] = candies[1] + 1 = 2
结果: candies = [1, 1, 2]右到左遍历:
索引1: 0 (评分 1) > 0 (评分 1) 且 candies[1] <= candies[2], 无变化
索引0: 1 (评分 1) > 0 (评分 0), 更新 candies[0] = candies[1] + 1 = 2
结果: candies = [2, 1, 2]总糖果数: 2 + 1 + 2 = 5

方法二:单次遍历法

解题步骤

  1. 创建一个糖果数组,初始化每个孩子的糖果数为 1。
  2. 使用一个标记数组来记录相邻孩子之间的关系(评分高的标记为 1,评分低的标记为 -1,相等标记为 0)。
  3. 单次遍历,根据标记调整糖果数,确保所有条件都满足。
  4. 返回糖果数组的总和。

Python 示例

def candy(ratings):n = len(ratings)if n == 0:return 0if n == 1:return 1candies = [1] * nfor i in range(1, n):if ratings[i] > ratings[i - 1]:candies[i] = candies[i - 1] + 1for 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)# Example usage
ratings = [1, 0, 2]
print(candy(ratings))  # Output: 5ratings = [1, 2, 2]
print(candy(ratings))  # Output: 4

算法分析

  • 时间复杂度:O(N),其中 N 是孩子的数量。需要遍历两次数组。
  • 空间复杂度:O(1),只使用了常数级别的额外空间。

算法图解与说明

考虑 ratings = [1, 0, 2]初始化糖果数组:candies = [1, 1, 1]单次遍历:
从左到右遍历:
索引1: 1 (评分 0) <= 0 (评分 1), 无变化
索引2: 2 (评分 2) > 0 (评分 0), 更新 candies[2] = candies[1] + 1 = 2
结果: candies = [1, 1, 2]从右到左遍历:
索引1: 0 (评分 1) > 0 (评分 1) 且 candies[1] <= candies[2], 无变化
索引0: 1 (评分 1) > 0 (评分 0), 更新 candies[0] = candies[1] + 1 = 2
结果: candies = [2, 1, 2]总糖果数: 2 + 1 + 2 = 5

这两种方法都能有效地解决分发糖果的问题,确保每个孩子至少得到一颗糖果,并且评分更高的孩子比相邻孩子获得更多糖果。选择哪种方法可以根据具体场景和个人喜好而定。

🌹🌹如果觉得这篇文对你有帮助的话,记得一键三连关注、赞👍🏻、收藏是对作者最大的鼓励,非常感谢 ❥(^_-)

❤️❤️作者知识有限,如有错误,请各位大佬评论区批评指正,不胜感激❥(^_-)
在这里插入图片描述

http://www.ds6.com.cn/news/122765.html

相关文章:

  • 搜搜提交网站入口网站排名优化软件联系方式
  • 电气毕业设计代做网站网络推广公司服务内容
  • 宝安的医院网站建设容易被百度收录的网站
  • 专业制作网站公司吗淘宝怎么推广自己的产品
  • 做网站有什么作用b站视频推广网站
  • 乱起封神是那个网站开发的重庆seo博客
  • 个人网站制作步骤收录优美图片app
  • 百度收录哪些网站爱站网备案查询
  • 兰州建设厅网站如何推广品牌
  • 郑州建站程序怎么推广网站链接
  • 昆明建设windows优化大师卸载不掉
  • 前端 兼职做网站站长工具下载app
  • 张家口做网站便宜点的南昌搜索引擎优化
  • 没有网怎么装wordpressseo的优化流程
  • 设计师培训怎么样网站推广优化方式
  • 大连网站制作公司深圳网站seo推广
  • 美文的手机网站seo专业学校
  • 股票实时交易网站开发怎么样拓展客户资源
  • 网站建设定制设计大数据营销精准营销
  • 杭州专业网站优化公司怎么在百度做网站推广
  • 晋州市建设局网站国内最新十大新闻
  • 黑龙江建设银行交通违法网站排名优化公司哪家好
  • 网站建设费用还是网络线上广告推广平台
  • jsp做的当当网站的文档网站快速排名推广软件
  • 网站建设企业建站电商运营去哪里学比较好
  • 给小孩子做网站百度上海总部
  • 网站建设属于设备吗网络营销组合策略
  • 做公司网站都需要什么中国站长之家官网
  • 做3d在哪个网站上接单比较好成都网站建设制作公司
  • 应用商城app下载安装简述seo的应用范围