最资讯丨地铁闸机题:地铁闸机上一秒没有被使用怎么办?
第二题 地铁闸机
(资料图)
某地铁站有一个闸机,同一时刻只允许一名乘客进站或出站,一个乘客通过闸机需要 1 秒钟。
如果在同一时刻,一个乘客要进站,另一个乘客要出站,按如下规则进出站:
l 如果上一秒,闸机没有被使用(即使更早被使用过),那么进站的乘客优先通过;
l 如果上一秒,闸机有乘客进站,那么进站的乘客优先;
l 如果上一秒,闸机有乘客出站,那么出站的乘客优先。
现有一群乘客要通过这个闸机,乘客的到达时刻记录于数组 arrTime 中(升序,可能有重复值),下标表示乘客的编号;乘客的进出站方向记录于direction中(0 表示出站,1 表示进站)。
请按乘客的编号顺序依次返回每个乘客实际通过闸机的时刻。
注意:若多人同时进站,按 arrTime 中下标从小到大顺序通过闸机;若多人同时出站,也按此处理。
Ø 示例 1:
输入:
arrTime = [0,0,1,5]
direction = [0,1,1,0]
输出:[2,0,1,5]
解释:
在 0 时刻,乘客 0(出站)和 1(进站)想要通过闸机。由于闸机上一秒没有被使用,所以乘客 1 优先进站,乘客 0 等待下一时刻;
在 1 时刻,乘客 2(进站)到达闸机,和乘客 0(出站)都要通过闸机。由于上一秒闸机有乘客进站,所以乘客 2 优先进站,乘客 0 继续等待下一时刻;
在 2 时刻,乘客 0 通过闸机;
在 5 时刻,乘客 3 通过闸机。
Ø 示例 2:
输入:
arrTime = [2,2,2,2,3,3,5,5,20,20]
direction = [0,1,1,0,0,1,1,0,0,1]
输出:[6,2,3,7,8,4,5,9,21,20]
解释:
在 2 时刻,乘客 0 和 3 同时出站,乘客 1 和 2 同时进站。由于闸机上一秒没有被使用,进站优先,且下标小的乘客 1 优先通过闸机;
在 20 时刻,乘客 8 要出站,乘客 9 要进站。由于闸机上一秒没有被使用(之前被使用过),所以乘客 9 优先通过闸机。
提示:
l 0 < arrTime.length == direction.length <= 10^5,arrTime[i] 和 direction[i] 分别表示第 i 个乘客的到达时刻和进出站方向
l 0 <= arrTime[i] <= arrTime[i+1] < 10^9
l direction[i] 仅为 0 或 1
答题要求:您编写的代码需要符合 CleanCode 的要求(包括通用编码规范、安全编码规范和圈复杂度)。
这道题看上去没有啥特别的算法,就是直译,条件判断稍麻烦,圈复杂度容易超出。
#include#include#includeusing namespace std;class Solution {public: bool canIn(queue&otherQueue, int machineState, int ticktime, pair&theOther) const { bool shouldPass = false; if (machineState == 0 || machineState == 1) { shouldPass = true; } if (machineState == -1) { if (otherQueue.size() > 0) { theOther = otherQueue.front(); if (theOther.second > ticktime) { shouldPass = true; } } if (otherQueue.size() == 0) { shouldPass = true; } } return shouldPass; } bool canOut(queue&inQueue, int machineState, int ticktime, const pair&currOut, pair&currIn) const { bool shouldPass = false; if (currOut.second <= 0="" if="" machinestate="=" shouldpass="true;"> 0) { currIn = inQueue.front(); if (currIn.second > ticktime) { shouldPass = true; } } if (inQueue.size() == 0) { shouldPass = true; } } } return shouldPass; } vectorCalcInOutTime(vectorarrTimes, vectordirections) { int size = arrTimes.size(); vectorresult(size); // 拆分为出站和进站两个队列 queueinQueue; queueoutQueue; for (int i = 0; i < directions.size(); ++i) { if (directions[i] == 1) { inQueue.push({i, arrTimes[i]}); } else { outQueue.push({i, arrTimes[i]}); } } // 以闸机视角处理 int machineState = 0; // 上一秒的状态,默认为空闲 int ticktime = arrTimes[0]; bool shouldPass = false; // 当前是否可以通过 paircurrIn; paircurrOut; while (ticktime < arrTimes[size - 1] + size) { shouldPass = false; // 进一人 if (inQueue.size() > 0) { currIn = inQueue.front(); if (currIn.second <= shouldpass="" if="" machinestate="0;" else=""> 0) { currOut = outQueue.front(); shouldPass = canOut(inQueue, machineState, ticktime, currOut, currIn); if (shouldPass) { result[currOut.first] = ticktime; outQueue.pop(); machineState = -1; // 出站 } else { machineState = 0; // 空闲 } } // 不过人 ticktime++; } return result; }};
测试用例如下:
TEST(SubwayTestSuite, Test1) { Solution s; vectorarrTimes = {2, 2, 2, 2, 3, 3, 5, 5, 20, 20}; vectordirections = {0, 1, 1, 0, 0, 1, 1, 0, 0, 1}; vectorresult = s.CalcInOutTime(arrTimes, directions); vectorexpected = {6, 2, 3, 7, 8, 4, 5, 9, 21, 20}; for (int i = 0; i < expected.size(); ++i) { ASSERT_EQ(expected[i], result[i]); }}TEST(SubwayTestSuite, Test2) { Solution s; vectorarrTimes = {0, 0, 1, 5}; vectordirections = {0, 1, 1, 0}; vectorresult = s.CalcInOutTime(arrTimes, directions); vectorexpected = {2, 0, 1, 5}; for (int i = 0; i < expected.size(); ++i) { ASSERT_EQ(expected[i], result[i]); }}
标签:
相关推荐:
精彩放送:
- []世界快讯:短裙的英语单词是什么?短裙的英语单词有哪些?
- []电脑闪屏无法打开软件怎么办?教你如何修复
- []郑爽自曝30岁前有冻卵打算 前男友被7场起诉 4个月官司缠身
- []视讯!DNF双天赋后洗点问题有哪些?DNF双天赋洗点问题解答
- []御龙在天绿装怎么合成紫装?御龙在天怎么合紫装?
- []当前速讯:协和电子:截至2023年2月28日,公司的股东数是15255人
- []为什么波波维奇击败湖人之后 依旧不选择巴特尔?
- []世界热推荐:珠海冠宇:公司已进入三星的供应链体系
- []世界快资讯丨五金制品包括哪些产品?五金产品详情介绍
- []河南师范大学和商丘师范学院哪个好?985还是211?
- []动物冷知识讲解:什么动物吃仙人掌都不觉得扎嘴?
- []新动态:伊利股份:公司每年会基于市场调研和消费者洞察,推出满足消费者广泛、多样化和个性化需求的新品
- []前沿热点:诸暨越都投资底价3000万元转让越都置业10%股权 绿城持股另90%
- []世界讯息:遥望洞庭山水色的下一句是什么?遥望洞庭山水翠还是色
- []全球关注:大块泡沫能作为逃生工具吗?蚂蚁庄园最新答案
- []【世界新视野】大专高考录取结果什么时候出来?地区分数线公布时间?
- []微资讯!仙剑5前传糖豆有什么用?语音包怎么下载?
- []焦点快播:宽怎么组词语?汉字宽的意思有哪些?
- []院校预录是什么意思?显示院校预录是不是被录取了?
- []星光大道2015年总决赛冠军是谁?是王紫凝吗?
- []穿越火线北区灵异事件 cf北方大区闹鬼是怎么回事?
- []焦点热议:慰藉的近义词是什么词?慰藉的近义词介绍
- []简讯:蒂芙尼戒指一般在什么价位?怎么选才划算?
- []电介质和导体的区别是什么?电介质和导体的区别介绍
- []【天天速看料】python中rb是什么意思?Python文件读写的几种模式
- []环球观速讯丨基于jsp+servlet+pojo+mysql的贴吧系统 java项目源码介绍
- []【世界热闻】手机系统怎么升级?刷机有风险吗?
- []天天时讯:excel下拉菜单怎么做?excel系列软件最新版本下载
- []当前头条:内地直飞巴厘岛航班复航,巴厘岛旅游局局长接机
- []进位标志位中的数值被丢弃?汇编SHL指令和SHR指令
- []快播:excel高级筛选怎么用?excel高级的用法步骤
- []Word中的表格如何调整?Word表格调整技巧
- []天天观速讯丨nvidiaquadro和geforce有什么区别?两者区别介绍
- []天天热点评!一个手机号可以注册两个微信账号吗?注册流程是什么?
- []【环球时快讯】虚拟机怎么安装?vmware虚拟机安装教程
- []环球讯息:hexagon净水器好不好?hexagon净水器产品优点介绍
- []word中如何设置文本的首行缩进?word文本首行缩进设置方法
- []为什么用Thread.Sleep函数把线程挂起时间?关于Thread.sleep的两个问题
- []范氏之间的关系基础知识(一)
- []穿越火线:nsiserror怎么解决?重新下载再安装
- []信息:3x3的CCM矩阵如何标定?CCM矩阵色彩校正方法
- []如何查询每个岗位的中位数位置?如何分析中位数?
- []天天要闻:什么是领域?输入流和输出流应该作为设计对象看待吗?
- []计算机语言元素周期表——3D版化学元素列表
- []Statement、PreparedStatement、CallableStatement有什么区别?三者区别的详情介绍
- []社交是什么?看懂这6条社交潜规则
- []快报:prisma怎么用?Prisma有没电脑版?
- []华为荣耀4C什么配置参数?华为荣耀4C标配有什么?
- []全球今热点:【easychm】CHM文档制作工具 制作CHM文档步骤
- []世界视讯!亚航宣布全面重返中国,预计Q4将超过疫情前水平
- []世界观焦点:电脑功耗等于电源瓦数吗?菜鸟进阶篇之电脑功耗测算方法
- []环球最资讯丨usb3.0不能用怎么办?usb3.0不能使用的解决办法
- []天天热点!ps图层蒙版怎么使用?ps图层蒙版使用步骤
- []全球今头条!java面试题有哪些?非技术性问题和HR问题汇总
- []全球聚焦:百度快照是什么?百度快照的相关内容介绍
- []【世界播资讯】读书须用意一字值千金的意思是什么
- []白细胞偏高是怎么回事呢_白细胞偏高是怎么回事
- []世界热点!园林绿化工程师证_园林绿化工程师
- []世界热点评!特斯拉准备改造Model Y,除了外观内饰外,续航里程有望小幅度提升
- []《关注函》回复延迟致*ST计通迟迟未复牌 律师:退市不影响投资者索赔
- []全球信息:川藏线上,举着求“RB”的女人是干嘛的?有经验的司机说出了实话
- []世界看点:autofire啥意思_autofire
- []当前关注:铜牛信息:公司与字节跳动关联企业有业务合作
- []全球资讯:天保基建拟为天津2家子公司1亿元贷款提供担保
- []梭哈光伏!上机数控用过期数据预测未来,58亿投建5万吨硅料!
- []【世界独家】一大二公是什么_一大二公是什么意思
- []天天热资讯!攻占美日,中国电池将磷酸铁锂捧上电车顶流
- []环球即时看!两会快讯 | 工信部部长:我国5G基站总数今年有望突破290万个
- []天天速递!全面上云宣告收官!"零售之王"迈入全面数字化新阶段,复盘"超级工程"…
- []快消息!两会快讯 |?生态环境部:推动经济社会绿色低碳转型从源头上根本改善
- []开源策略:看好中小盘成长制造业方向(附3月十大金股)
- []为什么花呗提前还款是大忌 提前还花呗为什么是大忌
- []【环球新视野】如何查询贷款合同编号,有以下四种方法
- []天风策略:当前位置如何度量A股的空间?其中的变数又是什么?
- []当前热点-戴维斯双杀是什么意思
- []世界快看点丨三个月定期存款利率2020
- []天天速递!干性皮肤护肤品排行榜10强 适合特干皮肤的护肤品推荐
- []全球速讯:国债逆回购手续费 国债逆回购的手续费是多少
- []今日关注:eft基金是什么意思
- []cips概念股票龙头,优质龙头股票盘点
- []焦点快看:政府工作报告中这些内容涉及房地产,解读来了
- []微速讯:2020年一年期存款利率
- []我不是药神票房 我不是药神电影票房
- []热头条丨权益乘数计算公式 权益乘数要怎么算
- []全球热议:日利息率0.05%是多少
- []环球头条:中国tmt行业龙头
- []2022全国首套房贷款利率一览表,各大行房贷利率一览
- []阿里商旅与华住实现会员互通;《全球展览业晴雨表》显示今年前景乐观 | 一周商旅动态
- []世界信息:创业板股票涨跌幅限制是多少
- []51高速公路免费几天,5天
- []世界速递!2020年房贷利率
- []外资机构继续看好A股!企业盈利改善推动市场上行 更多机构以特殊投资配置
- []环球实时:7个关键字带你看2023年《政府工作报告》
- []股票xd表示什么意思
- []国产最强2.0T发动机+全球首搭ESP10.0,影豹2.0T真性能猛兽?
- []世界实时:什么多么什么什么多么什么好像什么仿写句子_什么多么什么
- []今亮点!怎么查农村信用社卡余额
- []公积金怎么预约提取公积金
- []2022创业贷款政策,共有以下三条
- []拉卡拉手续费怎么算
- 碳中和概念龙头股 碳中和板块龙头股
- 2023第六届世界肚皮舞节 暨新加坡“非凡女神”选举大赛火热报名中
- 今日热门!蛆虫是怎么产生的
- 【报资讯】如何查询自己开户的证券公司 有以下三种方法查询
- 焦点关注:发行费用和交易费用的区别 发行费用有哪些
- 钢铁股票龙头股有哪些 钢铁股票龙头
- 每日短讯:沪深港通扩容五大看点:市值门槛调至50亿 纳入在港上市外国公司
- 乐看A股未来表现 明星私募基金经理齐发声
- 世界信息:基金下折是什么意思
- 分级b基金是什么意思
- 新消息丨被逼无奈?过会久等难获批文 8家IPO“苦主”从头再战 注册制下上市梦能圆?
- 每日速讯:中国银行贵金属交易时间
- a股,b股,h股,n股的区别
- 全球要闻:银行汇款流程
- 焦点精选!中韩自贸区概念股票龙头一览表,2023中韩自贸区相关上市公司有哪些
- 当前视讯!理财产品排行,十大产品名称一览
- 讯息:中秋节股市休市几天2022,三天
- 环球焦点!北交所概念股票龙头一览表,2023北交所概念相关上市公司有哪些
- 农村合作医疗网上缴费怎么交2021,分为以下四步
- 环球视点!星牌台球桌价格一般多少钱_星牌台球桌价格
- 沪农申购是什么板块
- 2022年国庆节期间股市休市安排,共休市9天
- 微速讯:余额宝连续6天没有收益,有以下三种原因
- 元旦节股市放假几天,三天
- 目前活期存款利率是多少,各银行活期利率一览
- 【新视野】a股b股h股区别
- 全球微头条丨端午股市休市吗,是休市的
- 投资收益率多少合适,分以下五种情况
- 【世界热闻】华住出售雅高酒店股票;年轻人正在抛弃传统年会 | 一周速览
- 高端制造业有哪些股票龙头 高端制造行业有哪些龙头股
- ipo和上市有什么区别 定义不同
- 当前热点-安徽国资改革概念股票龙头一览表,2023安徽国资改革相关上市公司有哪些
- 【当前热闻】a股端午节节假日休市时间,2022年6月3日到6月5日
- 视讯!矿泉水瓶是什么材料
- 世界今热点:如何使用支付宝 支付宝使用方法
- 环球最新:军工股有哪些
- 世界热点评!股票底部放量下跌,意味着什么
- 【全球播资讯】swift code是什么意思
- 金价为何猛涨 金价猛涨的原因是什么
- 全球焦点!盐湖提锂概念股票龙头一览表,2023盐湖提锂相关上市公司有哪些
- 兴业银行理财产品 兴业银行热门理财产品
- 当前热门:按揭贷款计算 按揭贷款怎么计算
- 快报:股票开市时间到几点
- 支付宝提现限额是多少
- 天天讯息:什么是余额宝
- 稀土概念股票有哪些,十大龙头股一览
- 微速讯:经济危机产生的原因,有以下四种原因
- 买混动当真首选比亚迪?哈弗二代大狗了解一下?
- 工行信用卡年费
- 外汇怎么炒,四步即可炒外汇
- 世界观速讯丨农业股票有哪些龙头股份
- 全球头条:连花清瘟胶囊龙头股,相关股票一览
- 世界球精选!股票开户流程网上开户,有以下9个步骤
- 存款利率表2022最新版,各银行存款利率表一览表
- 当前速读:集合竞价时间规则
- 环球热头条丨国航白金卡标准
- 今日热门!福建各市gdp排名,2021年福建各市GDP一览
- 全球热头条丨中字头股票有哪些 中字头股票一览表
- 前沿资讯!今年银行存款利率是多少2022,各大行存款利率一览
- 银行活期利率表2023最新利率,国内各大银行活期利率大全(最完整版)
- 环球时讯:港股开户的条件有哪些
- 即时焦点:一周拿下近200亿合同,上机数控强势回归
- 环球今日讯!股指期货一手多少钱 股指期货买一手要多少钱
- 成熟稳重文案_成熟稳重
- 【播资讯】美国能源部助推10家新型储能企业“冒尖”!
- 当前快播:开网店需要多少钱 开网店大概需要多少钱
- 天天信息:爱旭股份:首期6.5GW ABC电池项目已投产 预计第二季度达到满产状态
- 中国银行的标志
- 城市商业银行包括哪些
- 热消息:工商银行贷款利率 工商银行的贷款利率
- 观焦点:一分利是百分之多少
- 焦点精选!什么是PE投资
- 热头条丨农业银行年利率是多少2022,存贷款利率一览
- 响应共富分配8万套安置房?北京市住建委辟谣
- 天天头条:一吨黄金多少钱 一吨黄金是多少钱人民币
- 【全球时快讯】一年期定期存款利率 银行定期一年存款利率是多少
- 世界最新:全球人均gdp排行榜2022,各国人均gdp排名一览
- 天天新资讯:财政金融动员的主要措施包括
- 世界时讯:招商银行星期六上班吗 招商银行星期六上班时间
- 看点:吉宏股份:公司跨境电商业务属于数字经济范畴,是数字经济中的一种重要产业形态
- 全球欠中国钱一览表,美国排在第一名
- 各大银行定期存款利率排行表2022,各行存款利率一览
- 每日观察!全面注册制是什么意思
- 每日时讯!全国gdp省份排名2022最新排名,34省gdp一览
- 环球热门:2022年房贷利率最新消息,各行房贷利率一览
- 欧普照明助力华为方舟壹号实验室建设,共同开启全屋智能新篇章
- 【全球快播报】高铁退票扣多少钱的手续费 高铁退票需要收多少手续费
- 天天要闻:工商银行上班时间几点到几点,有以下两种情况
- 全球百事通!舟山自贸区概念股票龙头一览表,2023舟山自贸区相关上市公司有哪些
- 2022存款利率表,各大银行存款利率一览
- 世界即时:毛利率的计算公式 毛利率怎么算
- 趣学旅程ChatGPT全新升级,为您提供更加智能化的语言交流体验
- 天天最新:“小火花”动物开心故事
- 优惠类商户包括哪些
- 环球热资讯!死海在哪个地方?为什么叫死海?_死海在哪
- 每日热议!一吨现金有多少人民币 多少人民币重一吨
- 净利润和毛利润的区别
- 如何自己开通网上银行
- 今日视点:新宝股份:公司会根据经营需要补充相应的人才
- 汇川技术:公司会定期在互动易“公司声音”版块披露当期的股东人数,您可以自行关注