农场主牛牛开始用无人机给他的农田施肥,农田共有 n 行,无人机携带了 m 千克肥料。无人机的施肥方式为: 给第 1 行施 1 千克肥料; 给第 2 行施 1 千克肥料; ... 给第 n-1 行施 1 千克肥料; 给第 n 行施 1 千克肥料; 然后更改方向给第 n-1 行施 1 千克肥料; 给第 n-2 行施 1 千克肥料; ... 即每次给整个农田施一遍肥料,无人机就会自动更改方向继续施肥直到无人机携带的肥料用完位置。 现在牛牛想知道每行最终施了多少肥料。 函数传入两个正整数 n 和 m 分别代表农田的行数和无人机携带的肥料数,你需要返回一个数组,假设数组为 a ,则 a_i 表示第 i+1 行农田被灌溉了 a_i 千克的肥料 (0 ≤ i ≤ n-1) 。 (施肥前每一行都是0)
4,6
[1,2,2,1]
2,5
[3,2]
考点:模拟
限制 1 秒 / 256MB | 核心代码模式(实现给定函数)
推荐方向:模拟
本题切入点
无人机来回一次给每行加 2(两端行加 1),先算完整来回的轮数,再处理最后不足一輪的余数。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
样例 1:输入 4,6 → 输出 [1,2,2,1]
无人机按照 [1,2,3,4,3,2] 的顺序施肥,最终第1行施了1千克,第2,3行施了2千克,第4行施了1千克。
因此答案为[1,2,2,1]。
样例 2:输入 2,5 → 输出 [3,2]
无人机按照 [1,2,1,2,1] 的顺序施肥,最终答案为[3,2]
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-贝壳找房-Java工程师-第一批笔试;2024年秋招-贝壳找房-C++工程师-第一批笔试;2024年秋招-贝壳找房-前端工程师-第一批笔试 等。