201609-2 火车购票

2021-03-18  本文已影响0人  Vsion8980

此题比较常规,时间复杂度n²。

题解1

对命令进行循环处理
使用一个全局vector存储座位状态信息。

每个命令从第一排开始查找,找到当前排的第一个空座开始,累加空座位坐标(不一定相连)。
由于每一排固定5个座位,找到第一个空座,也即找到了当前排的剩余空座数,即最大空余邻座数
如果最大空余邻座数满足命令要求,就可以将此组座位锁定,记录坐标

如果整个车厢都没有满足命令要求的空余邻座,那么就安排小号空座位
注意:无需判断是否无座,因为题目已经说明购票数量不大于100,因此不必在这个问题上浪费时间和空间

最后,将坐标转换为座号即可。

题解2

在题解1思路的基础上,使用一个一维向量存储每排空座数,由于座位是从小到大按序安排,所以,空座位置必定是大号的数量,

比如:第一排空座数3,那么空座位一定是(1,3)、(1,4)、(1,5)

据此可以减少时间消耗,省去了在每排中的列中循环判断的步骤。属于经典的空间换时间。

但是,提升不明显。

上一篇 下一篇

猜你喜欢

热点阅读