题目链接:https://leetcode-cn.com/problems/cinema-seat-allocation/

在一个电影院里,有n行座位,每行10个,被过道分隔为左边三个中间四个右边三个。四口之家去看电影,有三种坐法,一是都坐中间,二是坐左边过道的两边(各坐两个人),三是坐右边过道两边(各坐两个人)。但是有的座位已经被预约了,问电影院还能够坐多少个这样的四口之家?
note:1<=n<=1091<=n<=10^91<=n<=109

分析

首先关注数据量,这里的数据量是亿级的,所以O(n)O(n)O(n)复杂度一定会超时的。经过观察,能够得到如果某一行座位没有被预约,那么就能够安排两家人,要是被预约了我们就要根据预约情况来判断能够安排多少家庭。我们只处理有预约的座位行,采用位运算,记录被预约的行。

代码:

class Solution {public:int maxNumberOfFamilies(int n, vector<vector<int>>& reservedSeats) {unordered_map<int,int> record;for(auto &vec:reservedSeats){record[vec[0]]|=(1<<(vec[1]-1));//记录保留位置}int ans=(n-record.size())*2;int a=0b0111111110;int b=0b0000011110;int c=0b0111100000;int d=0b0001111000;for(auto &p:record){if((p.second&a)==0){ans+=2;continue;}if((p.second&b)==0){ans+=1;continue;}if((p.second&c)==0){ans+=1;continue;}if((p.second&d)==0){ans+=1;continue;}}return ans;}};

leetcode 1386. 安排电影院座位 位运算相关推荐

  1. leetcode 1386.安排电影院座位

    一.题解 对于每一排座位,被安排家庭数目有四种情况: 1.安排两个家庭,即列2到9都没被预约. 2.安排一个家庭在左边,即2到5没被预约. 3.安排一个家庭在中间,即4到7没被预约. 4.安排一个家庭 ...

  2. 1386. 安排电影院座位

    Powered by:NEFU AB-IN Link 文章目录 1386. 安排电影院座位 题意 思路 代码 1386. 安排电影院座位 题意 如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 ...

  3. 力扣:安排电影院座位

    题目描述 如下图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 . 给你数组 reservedSeats ,包含所有已经被预约了的 ...

  4. 安排电影院座位--贪心算法

    LeetCode 安排电影院座位 如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 . 给你数组 reservedSeats ...

  5. Leetcode 1386:安排电影院座位(超详细的解法!!!)

    如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 . 给你数组 reservedSeats ,包含所有已经被预约了的座位.比如 ...

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

    题目描述 如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 . 给你数组 reservedSeats ,包含所有已经被预约了的 ...

  7. LeetCode 289. 生命游戏(位运算)

    文章目录 1. 题目 2. 解题 2.1 复制数组解法 2.2 原地解法 2.3 位运算 1. 题目 链接:289. 生命游戏 2. 解题 2.1 复制数组解法 很简单,按照题意模拟即可 class ...

  8. LeetCode 389. 找不同(位运算)

    1. 题目 给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 2. 解题 2.1 土办法,哈希map ...

  9. LeetCode题解(1386):安排电影院座位(Python)

    题目:原题链接(中等) 标签:贪心算法.数组 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(R)O(R)O(R) O(R)O(R)O(R) 144ms (41.56%) A ...

最新文章

  1. Activiti Explorer 源码浅析
  2. java中后端拼接字符串返回前台页面换行显示
  3. 数组对象根据某个属性取出重复的个数
  4. 如何分析SAP UI5应用的undefined is not a function错误
  5. Iphone在ScrollView下点击TextField使文本筐不被键盘遮住
  6. 我的新书《PWA入门与实践》上市了
  7. Android “再按一次退出“
  8. 开源监控利器grafana
  9. joomla第一单元第四节K2类别设置和第五节项目视图选项
  10. Helm 3 完整教程(十二):Helm 函数讲解(6)字典函数
  11. 力扣-692 前k个高频单词
  12. Jedis操作reids集群
  13. IBM DB2百度云下载
  14. VBA InStr 函数
  15. 极化码生成矩阵的构造
  16. win10自带抓包工具_Win10商店抓包工具(UWP挖掘机)下载 v1.1
  17. Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组私聊禁言等功能全开源运营版本
  18. 液晶取字模工具linux,晓奇液晶汉字取模软件下载
  19. PLC编程实例(一) 基本电路
  20. 傅里叶变换公式整理,意义和定义,概念及推导

热门文章

  1. MainActivity.this是什么意思以及为什么这样表达
  2. 亚马逊云科技 build on - 实验20220806
  3. 浪潮信息边缘服务器ne5260m5,云燧i10的浪潮边缘计算服务器NE5260M5
  4. 苹果cms 海洋cms 首页幻灯轮播图片
  5. DIVI主题很快吗?
  6. 编程猫和python区别_西瓜创客和编程猫有什么不同?哪个更值得报名?
  7. 如何构建可靠的台账数据——详解台账管理系统的使用方法
  8. 删除SQL Server数据库
  9. [创业之路-55] :总经理与CEO的区别?技术副总VP和首席技术官CTO的区别?
  10. 大功率半导体可调谐激光器