秋招每日一题T32——安排电影院座位

本文介绍了LeetCode上的一个问题——电影院座位安排。给定已被预约的座位数组,目标是找到最多能安排多少个4人家庭,他们需要坐在同排连续的座位上。解题策略涉及哈希表和位运算,通过遍历每一行并检查座位状态来确定可行的4人座位组合。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述

如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 。

给你数组 reservedSeats ,包含所有已经被预约了的座位。比如说,researvedSeats[i]=[3,8] ,它表示第 3 行第 8 个座位被预约了。

请你返回 最多能安排多少个 4 人家庭 。4 人家庭要占据 同一行内连续 的 4 个座位。隔着过道的座位(比方说 [3,3] 和 [3,4])不是连续的座位,但是如果你可以将 4 人家庭拆成过道两边各坐 2 人,这样子是允许的。

在这里插入图片描述
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/cinema-seat-allocation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

〇整体解题方向为:哈希表 + 位运算。
①首先可以开一个unordered_map,用于存储每一行被占用座位的位图。一行总共有十个座位,如果某个座位已经被占,那么该位为1,否则为0。
②根据题目描述,如果一行有座位满足条件,那么最好的情况可以是安排两个四人座位(整行都没有人,或者只在两个角),次优的情况是只能安排一个座位(中间四人)。
③对哈希表进行遍历(即,每一行),由于哈希表的键值是位图,因此使用0x1e0x1e00x78与键值进行与运算,分情况判断。(前面的三个16进制数,对应的是座位上是否有人)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值