通过率 100% · 提交 6 · 通过 6
某仓储中心中有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货(后进先出),管理员需要将货物按编号从小到大取出。 仓库设有 1 个临时区,可将主库顶部货物依次转移到临时区,临时区也为堆叠存放(后进先出);主库或临时区顶部货物均可直接出库;其他操作(包括主库→临时区 和 临时区→主库)均为“暂存”操作;请计算至少需要多少次暂存操作,能保证所有货物按编号从小到大依次出库。 补充说明:
这类题属于算法机考高频题型中「100分 / 华为OD」方向的高频题型,通常考察对「100分 / 华为OD」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
参数 1:一个整数 n(1 < n < 1000),表示货物的总数量。 参数 2:整数数组 a_1, a_2, ..., a_n(-1000 < a_i < 1000),表示货物的编号,从左到右依次对应货物堆底部到顶部。
一个整数,表示最少暂存操作次数。
示例 1
输入示例
3 3,1,2
输出示例
1
货物堆初始状态(底部→顶部):[3 号, 1 号, 2 号],顶部货物为 2 号 目标出库顺序:1 号 → 2 号 → 3 号 操作过程: 顶部是 2 号,但目标需要 1 号,将 2 号暂存到临时区(暂存次数 = 1) 顶部是 1 号,直接出库 → 已出库:[1 号] 临时区顶部是 2 号,出库 → 已出库:[1 号, 2 号] 货物堆顶部是 3 号,出库 → 已出库:[1 号, 2 号, 3 号] 最少暂存次数:1
示例 2
输入示例
3 1,2,3
输出示例
3
货物堆初始状态(底部→顶部):[1 号, 2 号, 3 号],顶部货物为 3 号 目标出库顺序:1 号 → 2 号 → 3 号 操作过程: 顶部是 3 号,但目标需要 1 号,将 3 号暂存(次数 = 1) 顶部是 2 号,但目标需要 1 号,将 2 号暂存(次数 = 2) 顶部是 1 号,直接出库 临时区顶部是 2 号,出库 临时区顶部是 3 号,出库 最少暂存次数:2
时间限制 1000 ms · 内存限制 256 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
示例 3
输入示例
6 6,5,2,4,3,1
输出示例
3
货物堆初始状态(底部→顶部):[6, 5, 2, 4, 3, 1],顶部为 1 号 目标出库顺序:1 → 2 → 3 → 4 → 5 → 6 操作过程: 主库顶部 1 号,直接出库 → 主库:[6, 5, 2, 4, 3],临时:[] 目标 2 号在主库深度 2(上方隔着 3 和 4),将 3、4 暂存到临时区,暂存次数 = 2 → 主库:[6,5],临时:[3, 4](顶) 主库顶部 2 号,直接出库 → 主库:[6, 5] 目标 3 号在临时区深度 1(上方隔着 4),将 4 暂存回主库,暂存次数 = 3 → 主库:[6, 5, 4],时:[3](顶) 临时区顶部 3 号,直接出库 主库顶部 4 号,直接出库 主库顶部 5 号,直接出库 主库顶部 6 号,直接出库 最少暂存次数:3 关键:第 4 步体现了双向暂存的价值 —— 将临时区的 4 移回主库,释放 3 出库。若无双向暂存,此场景无法解决。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有