leetcode 1386.安排电影院座位
生活随笔
收集整理的這篇文章主要介紹了
leetcode 1386.安排电影院座位
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、題解
對于每一排座位,被安排家庭數目有四種情況:
1、安排兩個家庭,即列2到9都沒被預約。
2、安排一個家庭在左邊,即2到5沒被預約。
3、安排一個家庭在中間,即4到7沒被預約。
4、安排一個家庭在右邊,即6到9沒被預約。
由此可以發現對于每一排的第1列和第10列,無論是否被占用,都不影響最后答案,而且對于第2、第3和第四種情況,都可以合并來計算。
對于該題考慮二進制的位運算來解決,將第2到9列設置為一個8位的二進制數,如果被占用,則置為1,否則置為0。對于第2到第9列未被占用的排,則按第1種情況乘以2作為安排家庭數。排對應的8個二進制數用哈希表來存儲,未存儲說明沒有座位被預約。
二、C++代碼
三、不熟悉的地方
1、位進制表示
0b+二進制數
例如:0b00000010等于2;
2、位進制運算符號
|:表示或,即兩個數中每位有1就為1
<<:表示左移,a<<b,即將a變為二進制數后左移b位,簡單來說加b個0.
例子:1<<3為00001000;
總結
以上是生活随笔為你收集整理的leetcode 1386.安排电影院座位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: main.c(5): warning C
- 下一篇: 移植STM32F051,编译后遇到