2023华为OD机试真题【机房布局/栈】

2023-10-26

小明正在规划一个大型数据中心机房,需要满足的条件是:确保在每个机柜边上至少要有一个电箱。
已知:机房排成1排,我们用M表示机柜,I表示间隔。
请你返回这整排机房,至少需要多少个电箱。如果无解请返回-1。
输入描述
第一行输入一个字符串,由 M 和 I 组成,表示机房的组成样式
输出描述
输出一个整数,表示整排机房至少需要多少个电箱。
如果无解请返回-1。
示例1:
输入: MIIM
输出: 2

解题思路

除了模拟之外,这道题还可以用栈求解。
遍历输入的字符串,如果遇到字符 ‘M’,表示遇到一个机柜,首先判断该机柜是否满足前后都有机柜的情况,如果是,则直接输出 -1 并结束程序。
1.如果遇到机柜(‘M’),我们需要确保至少在其左侧或右侧放置一个电箱。我们计算左侧和右侧的位置(pos_left 和 pos_right)。
2.检查栈顶元素是否等于 pos_left。如果等于 pos_left,说明上一个机柜已经放置了电箱,可以在当前机柜的左侧重复使用这个电箱。
3.如果栈顶元素不等于 pos_left 或者栈为空,说明需要在当前机柜的右侧放置一个新的电箱。这种情况下,我们将 pos_right 压入栈,表示新放置的电箱位置。
如果遇到间隔(‘I’),直接跳过。
遍历结束后,栈中的元素个数就是所需的电箱数量。<

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023华为OD机试真题【机房布局/栈】 的相关文章

随机推荐

  • Photoshop cc2019 破解教程

    Photoshop cc2019 破解教程 内含破解器 1 下载替换文件 Photoshop exe 链接如下 链接 https pan baidu com s 11XrnXWvGsnQ7YMbIMb49Lw 提取码 t9ol 2 打开Ph
  • Nginx 学习 一(安装)

    1 从官网现在nginx wget https nginx org download nginx 1 16 1 tar gz 解压 共有如下目录文件 2 让nginx 配置文件 vim 语法高亮 原先的 复制contrib 目录下文件到当前
  • windows Server 2008 R2服务器IIS环境启用TLS 1.2

    windows Server 2008 R2服务器IIS环境启用TLS 1 2 配置TLS1 2 分为2步 添加TLS配置和禁用老的SSL版本 提供两种方法 选择其中一种就行了 手动设置 打开注册表 运行regedit 找到 HKEY LO
  • kettle转换js实现MD5加密

    Script here js文件与转换文件保存路径一样LoadScriptFile getVariable Internal Transformation Filename Directory MD5 js var pass usernam
  • python【2】python3 的CSV数据规整化1

    最近分析一套数据 是csv格式的数据 必须是python分析数据比较顺手啊 于是研究一下csv模块 由于py的版本问题 3的资料中文的很少 所以记录一下 方便以后的学习 点击打开链接 上面的链接是python官网给的文档 英语好的建议看原版
  • 回归预测

    回归预测 MATLAB实现GRNN广义回归神经网络多输入多输出预测 目录 回归预测 MATLAB实现GRNN广义回归神经网络多输入多输出预测 预测效果 基本介绍 程序设计 往期精彩 参考资料 预测效果 基本介绍 MATLAB实现GRNN广义
  • 组合特征(三)tfidf(word+article+length)

    特征拼接 拼接文章长度 1 载入特征 2 读文章长度 3 特征缩放 拼接特征 import pickle 载入特征 with open tfidf word article pkl rb as f x train y train y tes
  • 【数字 IC】从底层重新认识 D 触发器、建立时间和保持时间

    目录 1 NMOS 和 PMOS 2 MOS 管搭建逻辑门 3 锁存器和触发器 3 1 交叉耦合反相器 3 2 SR 锁存器 3 3 D 锁存器 3 4 D 触发器 4 D 触发器的建立 保持时间 1 NMOS 和 PMOS MOSFET
  • 制作镜像

    2017 03 10 一直以来 都没有自己制作过景象 这次我得自己尝试下 https docs openstack org image guide virt install html 这里是官方的教程 2017 03 11 目前实验室制作镜
  • whistle代理配置帮助文档

    背景 Android开发需要与服务器调试API接口 whistle可以帮助配置代理的方式访问测试环境 并且联调抓包也非常方便 一 安装whistle 1 下载Node js 下载地址 https nodejs org en 下载完成后安装即
  • Servlet详解(二):request和response对象

    什么是request和response request对象是服务器对浏览器请求的封装 而response是服务器对服务器响应的封装 request用来取出请求信息 而response则用来添加要返回给浏览器的信息 使用response对象设
  • SpringBoot学习:整合shiro(验证码功能和登录次数限制功能)

    项目下载地址 http download csdn NET detail aqsunkai 9805821 一 验证码 首先login jsp里增加了获取验证码图片的标签 h1 style margin left 30px 登录页面 h1
  • SQLsever用户权限管理和数据库映射

    SQL Server2005中 用户映射 里成员身份选项的意思 用户映射 public 维护所有默认权限 db owner 执行所有数据库角色活动 db accessadmin 添加和删除数据库用户 组及角色 db ddladmin 添加
  • jQuery:mouseover and Increase the Size of an Image

  • mysql+中与当前时间比较大小_Mysql中时间加减和比较大小的方法

    在Oracle中使用时间函数to date习惯了 在Oracle中时间的加减也非常简单 直接加减即可 在Mysql中时间的函数很多 非常自由 在项目中经常用到的就是时间的加减 比如60天前 Oracle中直接就是sysdate 60 Mys
  • Acwing785. 快速排序

    Acwing785 快速排序 题目描述 代码展示 题目描述 代码展示 include
  • Golang 下划线语义

    丢弃返回值 err Test 用在变量接口断言 用来判断对象是否实现了接口 package main import fmt yangxd te var Foo Dog 如果没有实现 则 会编译失败 用来判断Dog 对象是否实现了Foo 接口
  • FPGA时序约束--基础理论篇

    FPGA开发过程中 离不开时序约束 那么时序约束是什么 简单点说 FPGA芯片中的逻辑电路 从输入到输出所需要的时间 这个时间必须在设定的时钟周期内完成 更详细一点 即需要满足建立和保持时间 时序约束可以让VIvado和Quartus等FP
  • ubuntu下安装opencv2.4.13成功版

    本文参考相关链接 http blog csdn net honyniu article details 46390097 系 统 Ubuntu 14 04 x64 opencv版本 2 4 13 安装之前 系统已经安装好cuda7 5和cu
  • 2023华为OD机试真题【机房布局/栈】

    小明正在规划一个大型数据中心机房 需要满足的条件是 确保在每个机柜边上至少要有一个电箱 已知 机房排成1排 我们用M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回 1 输入描述 第一行输入一个字符串 由 M 和