此题比较常规,时间复杂度n²。
题解1
对命令进行循环处理
使用一个全局vector存储座位状态信息。
每个命令从第一排开始查找,找到当前排的第一个空座开始,累加空座位坐标(不一定相连)。
由于每一排固定5个座位,找到第一个空座,也即找到了当前排的剩余空座数,即最大空余邻座数
。
如果最大空余邻座数
满足命令要求,就可以将此组座位锁定,记录坐标
如果整个车厢都没有满足命令要求的空余邻座,那么就安排小号空座位
注意:无需判断是否无座,因为题目已经说明购票数量不大于100,因此不必在这个问题上浪费时间和空间
最后,将坐标转换为座号即可。
题解2
在题解1思路的基础上,使用一个一维向量存储每排空座数,由于座位是从小到大按序安排,所以,空座位置必定是大号的数量,
比如:第一排空座数3,那么空座位一定是(1,3)、(1,4)、(1,5)
据此可以减少时间消耗,省去了在每排中的列中循环判断的步骤。属于经典的空间换时间。
但是,提升不明显。
网友评论