2024年美团秋招第四轮笔试编程题第2题

小美请工人在一条无限长的公路上种树,每个工人只能在自己位置和自己右边位置依次种树,每个位置只能种1棵树,每个工人种树数量都相等为k,工人总数为n,小美希望种下的树的总数至少是m,本题第一行将输入两个数字(以空格隔开),分别是工人数量n、小美希望种下树的总数m,第二行将输入表示工人位置的数字序列(以空格隔开),求出每个工人种树数量k的最小值。

示例如下

输入:

3 6

1 2 4

输出:3 。即工人1在位置1,在1、2、3号位种树;工人2在位置2,在2、3、4号位种树;工人3在位置4,在4、5、6号位种树。不存在比3更小的种树数量了。

我当时以为自己做出来了,测试用例也通过了,但提交之后却是错的,求问各位有思路分享吗?

更新:复现了当时的代码,发现是排序后取值边界的细节搞错了,明明思路想对了然而白白扣掉40分

// 美团2024秋招第四轮笔试编程题2 -- 种树
// https://www.nowcoder.com/discuss/659520408298782720
// 工人总数,要求种下的树的总数,工人位置数组  :  返回值是 每个工人最小种树数量
function plantTree(workerNum, treeNum, positions) {
  let distance = []
  for (let i = 0; i < workerNum - 1; i++) {
    distance.push(positions[i + 1] - positions[i])
  }
  distance = distance.sort() // distance有 workerNum - 1 项
  // 首先计算当前若不考虑最后一个工人种树数量,其余工人最多能种下多少树
  const total = distance.reduce((a, b) => a + b, 0)
  let lastindex = 0 // 记录上一次遍历是从哪个索引开始的
  for (let answer = Math.ceil(treeNum / workerNum); ; answer++) {
    let index = lastindex
    while (index < workerNum - 1 && distance[index] < answer) {
      index++
    }
    lastindex = index
    if (index >= workerNum - 1) {
      // 此时,说明每个工人种树数量已经超过了工人之间距离的最大值,故直接计算出每个工人要种树数量即可
      return treeNum - total
    } else {
      let tempTotal = 0
      for (let j = 0; j < index; j++) {
        tempTotal += distance[j]
      }
      // 如果此时,种树重叠了的工人种下的树,加上没有重叠的工人种下的树的总数,达到要求,就返回值
      if (tempTotal + (workerNum - index) * answer >= treeNum) {
        return answer
      }
    }
  }
}

#美团求职进展汇总##24届秋招同行攻略分享##你的秋招进行到哪一步了##你的秋招进展怎么样了##你觉得今年秋招难吗#
全部评论
做对俩编程 40 分,选择题不知道能对多少 ,不够 60 分给面试机会吗
点赞 回复 分享
发布于 2024-09-01 07:39 山西
对 要对工人的位置坐标排序 我的思路就是暴力枚举最少的中秋长度,变量 i 从 k/n 开始枚举,然后用一个大小为 max(工人位置)+i 的数组存储是否已经被种树(用 1 表示) 一旦这个数组中 1 的数据>=k 那就直接输出答案停止运行
点赞 回复 分享
发布于 2024-09-01 07:38 山西
排序,剔除种树区间重复的工人,通过100%
点赞 回复 分享
发布于 2024-08-31 22:55 吉林
要对position排序
点赞 回复 分享
发布于 2024-08-31 22:30 北京

相关推荐

头像
03-03 15:53
已编辑
黑龙江大学 Java
在当前开源项目极为丰富的背景下,付费资源并不一定意味着最前沿的技术优势,在具体执行层面展示出自己的独特价值,才是简历上最重要的加分项。1.&nbsp;WebMCP&nbsp;—&nbsp;让网站主动告诉&nbsp;AI&nbsp;该怎么操作AI&nbsp;操作浏览器的方案一直靠&quot;猜&quot;——截图识别、DOM&nbsp;解析,错误率&nbsp;15-30%。WebMCP&nbsp;反过来,让网站自己声明能做什么,AI&nbsp;直接调用结构化接口,准确率接近&nbsp;100%。Chrome&nbsp;Canary&nbsp;已实装。企业内部系统的&nbsp;WebMCP&nbsp;适配目前几乎没人做,是明确的蓝海。推荐理由:简历上写的不是&quot;我会用某个框架&quot;,而是&quot;我在标准刚发布时就做了企业适配&...
书海为家:#人脑vsAI# 尽管深度学习的最初灵感来源于人类的大脑,但二者的运作方式截然不同:深度学习所需要的数据量远比人脑所需要的多得多。可是一旦经过大数据训练,它在相同领域的表现将远远超过人类(尤其是在数字的量化学习,例如挑选某人最可能购买的产品,或从100万张脸中挑选最匹配的一张)——相对来说,人类在同一时间内只能把注意力放在少数几件事情上面,而深度学习算法却可以同时处理海量信息,并且发现在大量数据背后的模糊特征之间的关联,这些模糊特征不仅复杂而且微妙,人类往往无法理解,甚至可能不会注意到。 虽然深度学习拥有人类所缺乏的并行处理海量数据的“绝技”,但不具备人类在面对决策时独一无二的汲取过去的经验、使用抽象概念和常识的能力。 与人类相比,深度学习想要充分发挥作用,离不开海量的相关数据、单一领域的应用场景以及明确的目标函数,这三项缺一不可,如果缺少其中任何一项,深度学习将无用武之地。
AI求职实录
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务