华为OD机考2025B卷 - 机房布局(Java & Python& JS & C++ & C )

最新华为OD机试

真题目录:点击查看目录
华为OD面试真题精选:点击立即查看

题目描述

小明正在规划一个大型数据中心机房,为了使得机柜上的机器都能正常满负荷工作,需要确保在每个机柜边上至少要有一个电箱。

为了简化题目,假设这个机房是一整排,M表示机柜,I表示间隔,请你返回这整排机柜,至少需要多少个电箱。 如果无解请返回 -1 。

输入描述

cabinets = “MIIM”

备注:

其中 M 表示机柜,I 表示间隔

1 ≤ strlen(cabinets) ≤ 10000
其中 cabinets[i] = ‘M’ 或者 'I‘

输出描述

2

表示至少需要2个电箱

示例1

输入

MIIM

输出

2

示例2

输入

MIM

输出

1

示例3

输入

M

输出

-1

示例4

输入

MMM

输出

-1

示例5

输入

I

输出

0

解题思路

这个题目的主要意图是计算在给定的机柜排列中,至少需要多少个电箱来保证所有机柜都能正常工作。

示例分析

  • 示例 1

    • 输入: MIIM
    • 布局: M(电箱放在这)I M(电箱放在这)I M
    • 可以放置 2 个电箱,分别在第一个和第三个机柜旁边。
    • 输出: 2
  • 示例 2

    • 输入: MIM
    • 布局: M(电箱放在这)I M
    • 可以放置 1 个电箱,在第一个机柜旁边即可。
    • 输出: 1
  • 示例 3

    • 输入: M
    • 只有一个机柜,没有间隔可供放置电箱。
    • 输出: -1(因为无法满足条件)。

好的,以下是结合稍微复杂用例的优化表达:


代码思路

本题的关键在于合理放置电箱,以确保每个机柜旁边至少有一个电箱。我们采用从左到右的遍历方式,并优先将电箱放在机柜的右侧。

为什么优先放在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值