【腾讯云智笔试题——分苹果两种解法】

文章目录

  • 题目描述
  • 解题思路:
  • 疑惑解析
    • 代码中明明是两个嵌套的for循环时间复杂度为什么是O(m)?

题目描述

有m个苹果,n个小孩。每个小孩都有一个编号,小明的编号是。要尽量公平的分苹果,相邻编号的小孩分到的苹果数目差距不能大于1。
请问如何在满足相邻编号的小孩分到的苹果数目差距不能大于1的情况下,小明分配到的苹果数目最多,并且输出这个最大值,每个小朋友至少需分配到一个苹果。

输入描述
第一行输入三个整数。

输出描述
输出一行,表示小明分配到苹果个数的最大值。

示例 1
4 6 2
输出
2

说明

可以这样分配1 2 2 1。可以小明分配到了2个苹果。
图片:
原题图片

解题思路:

首先我这边有两种思路,第一种是暴力时间复杂度是O(m),即苹果越多,时间越长,空间复杂度是O(n),因为根据小孩数量声明的切片,第二种是利用高中数学中通过计算公式得出范围,不同范围内的苹果数是多少,因为全部是计算,不需要for循环所以时间复杂段和空间复杂度都是O(1),第二种思路地址:https://blog.csdn.net/m0_64941684/article/details/139408235?spm=1001.2014.3001.5501

代码奉上:

package mainimport ("fmt""os"
)// 全局数组来存储每个小孩的苹果数,初始化为0
var apples []intfunc main() {var n, m, k int_, err := fmt.Scanln(&n, &m, &k)if err != nil {fmt.Println("Error reading input:", err)os.Exit(1)}// 初始化每个小孩的苹果数为0apples = make([]int, n)for i := range apples {apples[i] = 0}result := maxApplesFork(m, n, k-1) // k-1 因为索引从0开始fmt.Println(result)
}func maxApplesFork(m, n, k int) int {if k < 0 || k >= n {return -1 // 索引越界}// 先给每个小孩分配一个苹果for i := range apples {apples[i] = 1}apples[k]++// 剩余苹果数applesLeft := m - napplesLeft--// 尝试分配剩余的苹果给小明及其相邻的小孩for applesLeft > 0 {if k > 0 && apples[k-1] <= apples[k]-1 {// 如果小明左边第一个小孩苹果数少于或等于小明苹果数减1,代表不具备小明苹果树+1的条件(条件是两者应该相等)则给小明左边的小孩一个苹果apples[k-1] = apples[k-1] + 1applesLeft--//每次剩余苹果数减一都需要判断是否为0if applesLeft == 0 {return apples[k]}i := k - 1//因为小明旁边第一个小孩苹果数+1啦,所以要判断他左边的小孩是否满足相差不超过1的原则,for i > 0 && apples[i-1] < apples[i]-1 {apples[i-1] = apples[i] + 1applesLeft--if applesLeft == 0 {return apples[k]}if apples[i-1] == apples[i]-1 {i--}}} else if k < n-1 && apples[k+1] <= apples[k]-1 {// 如果小明右边的小孩苹果数少于小明苹果数减1,则给小明右边的小孩一个苹果apples[k+1] = apples[k+1] + 1applesLeft--if applesLeft == 0 {return apples[k]}i := k + 1for i < n-1 && apples[i+1] < apples[i]-1 {apples[i+1] = apples[i+1] + 1 //asdfapplesLeft--if applesLeft == 0 {return apples[k]}if apples[i+1] == apples[i]-1 {i++ //asdf}}} else {// 否则,给小明一个苹果apples[k] = apples[k] + 1applesLeft--}}// 返回小明分到的苹果数return apples[k]
}

疑惑解析

代码中明明是两个嵌套的for循环时间复杂度为什么是O(m)?

如果有这个疑惑,就代表对时间复杂度理解还是有些不足的,一般情况下时间复杂度是代码中根据数据的量的变化而相应变化,如代码中的每一次循环都会让苹果数-1,所以总的循环次数是与苹果数正相关的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 类与对象的使用要点(超详细解析,小白必看系列)

1.面向过程和面向对象初步认识 C语言是面向过程的语言&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 例如&#xff1a;洗衣服 C是基于对象的&#xff0c;关注的是对象&#xff0c;将一件事拆分成不同的对象&#xff0c;靠对…

短信接口的对接及应用

短信接口即企业短信平台接口&#xff08;API版&#xff09;&#xff0c;是面向有一定技术开发能力的企业用户而单独研发的短信(sms)接口。以下是关于短信接口的主要内容和特点&#xff1a; 功能及作用&#xff1a; 支持二次开发&#xff1a;可以在现有的软件上进行定制修改、功…

Pandas——词云图绘制

文本处理 词频统计 绘制词云图 英文词频统计 分词→词形还原(nltk) →去停用词 →统计词频 中文词频统计 分词(jieba) →去停用词 → 统计词频 评论文本的分析 通过词云图展示出现次数较多的词, 可以发现问题 微博/头条/新闻评论 词云图绘制 可以使用Pyecharts绘制词云…

[NewStarCTF 2023 公开赛道]R!C!E!

好久没写了。今天儿弄一个rce 题很直接&#xff0c;好久没这么直白的题了&#xff0c;看源码 <?php highlight_file(__FILE__); if(isset($_POST[password])&&isset($_POST[e_v.a.l])){$passwordmd5($_POST[password]);$code$_POST[e_v.a.l];if(substr($password…

amov无人机连接;+数据传输;啊啊啊啊啊

socket传输数据: 局域网连接 连接---通信(命令行直接;)--- 传输数据(socket)--传输内容:launch文件; qgc连接; 1.局域网下的通信 1.1 局域网 厂家提供的方式是通过Homer图数传工具(硬件)构建的amov局域网实现通信连接. 好处是通信距离足够长,支持150m;坏处是"局部&qu…

电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法

在计算机使用过程中&#xff0c;缺失d3dcompiler_47.dll这一系统文件是一个常见问题&#xff0c;尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分&#xff0c;主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…

如何定制Spring的错误json信息

一&#xff0c;前言 相信很多同学都有遇到过这样的spring错误信息。 在我们没有做catch处理时或者做全局的exceptionHandle时&#xff0c;Spring遇到抛出向外的异常时&#xff0c;就会给我们封装返回这么个格式的异常信息。 那么问题来了&#xff0c;我们能否对这个返回增加错…

网络安全从入门到精通(特别篇I):应急响应案例

蓝队应急响应实战 1. 应急响应1. 应急响应 获取当前WEB环境的组成架构(语言,数据库,中间件,系统等) 分析思路: 1、利用时间节点筛选日志行为 2、利用已知对漏洞进行特征筛选 3、利用后门查杀进行筛选日志行为 #内容点: 应急响应: 1、抗拒绝服务攻击防范应对指南 2、勒…

day13 二叉树的遍历

一、二叉树的递归遍历 题目链接&#xff1a; 144.二叉树的前序遍历(opens new window)145.二叉树的后序遍历(opens new window)94.二叉树的中序遍历 文章讲解&#xff1a;https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E…

Go源码--sync库(3):sync.Pool(2)

回收 回收其实就是将 pool.local 置为空 可以让垃圾回收器回收 我们来看下 源码 func init() {// 将 poolCleanup 注册到 gc开始前的准备工作处理器中在 STW时执行runtime_registerPoolCleanup(poolCleanup) }这里注册了清理程序到GC前准备工作 也就是发生GC前需要执行这段代…

云上Elasticsearch-规格选型

阿里云ES购买实例规格&#xff0c;数据节点&#xff0c;kibana节点&#xff0c;专有主节点&#xff0c;冷数据节点&#xff0c;协调节点&#xff0c;弹性数据节点各是什么 在阿里云Elasticsearch中&#xff0c;不同类型的实例规格代表着不同的角色和功能。以下是对各个节点类型…

任务流程----

创建macvlan网络 sudo docker network create \--driver macvlan \--subnet<你的宿主机子网&#xff0c;如192.168.1.0/24> \--gateway<你的宿主机网关> \-o parent物理接口名称&#xff0c;如eth0 \my-macvlan-1 创建容器 sudo docker run -itd \--name contai…

鸿蒙HarmonyOS实战:渲染控制、路由案例

条件渲染 简单来说&#xff0c;就是动态控制组件的显示与隐藏&#xff0c;类似于vue中的v-if 但是这里写法就是用if、else、else if看起来更像是原生的感觉 效果 循环渲染 我们实际开发中&#xff0c;数据一般是后端返回来的对象格式&#xff0c;对此我们需要进行遍历&#…

Nginx 搭建域名访问环境

1.Nginx配置文件 server {listen 80;server_name www.gulimall.com;#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;location / {proxy_pass http://192.168.232.1:10001;}#error_page 404 /404.html;# redirect server error p…

华为od-C卷200分题目1 - 分月饼

华为od-C卷200分题目1 - 分月饼 题目描述 中秋节&#xff0c;公司分月饼&#xff0c;m个员工&#xff0c;买了n个月饼&#xff0c;m<n&#xff0c;每个员工至少分1个月饼&#xff0c;但可以分多个&#xff0c; 单人分到最多月饼的个数是Max1&#xff0c;单人分到第二多月饼…

信息论与大数据安全知识点

文章目录 第一章 绪论&#xfffc;大数据概述大数据安全与加密技术 安全存储与访问控制技术访问控制概念早期的四种访问控制模型局限性总结 大数据场景下的访问控制技术 安全检索技术密文检索基础 安全处理技术同态加密 隐私保护技术 第一章 绪论&#xfffc; 大数据概述 大数…

川湘菜店该如何选择合适的油烟净化器?

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 川湘菜以其浓郁的香味和丰富的口感&#xff0c;深受广大食客的喜爱。然而&#xff0c;川湘菜烹饪过程中产生的油烟量也相对较…

分班查询,一键发布,老师们都在用的分班查询系统

老师们开学季马上又要到了&#xff0c;回想起了每年埋头苦干&#xff0c;对着一堆堆的学生名单&#xff0c;一个个手动分配班级&#xff0c;再一个个通知家长和学生的日子&#xff0c;那种手忙脚乱&#xff0c;生怕出错的紧张感&#xff0c;是不是还历历在目&#xff1f;每次分…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA 的幸运游戏(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

三个“消失” 折射债市新变化

资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔夜”也在逐渐减少。 当前&#xff0c;债券市场正在出现一系列显著变化&#xff1a;资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔…