leetcode 1386.安排电影院座位
一、題解
對(duì)于每一排座位,被安排家庭數(shù)目有四種情況:
1、安排兩個(gè)家庭,即列2到9都沒被預(yù)約。
2、安排一個(gè)家庭在左邊,即2到5沒被預(yù)約。
3、安排一個(gè)家庭在中間,即4到7沒被預(yù)約。
4、安排一個(gè)家庭在右邊,即6到9沒被預(yù)約。
由此可以發(fā)現(xiàn)對(duì)于每一排的第1列和第10列,無(wú)論是否被占用,都不影響最后答案,而且對(duì)于第2、第3和第四種情況,都可以合并來(lái)計(jì)算。
對(duì)于該題考慮二進(jìn)制的位運(yùn)算來(lái)解決,將第2到9列設(shè)置為一個(gè)8位的二進(jìn)制數(shù),如果被占用,則置為1,否則置為0。對(duì)于第2到第9列未被占用的排,則按第1種情況乘以2作為安排家庭數(shù)。排對(duì)應(yīng)的8個(gè)二進(jìn)制數(shù)用哈希表來(lái)存儲(chǔ),未存儲(chǔ)說明沒有座位被預(yù)約。
二、C++代碼
三、不熟悉的地方
1、位進(jìn)制表示
0b+二進(jìn)制數(shù)
例如:0b00000010等于2;
2、位進(jìn)制運(yùn)算符號(hào)
|:表示或,即兩個(gè)數(shù)中每位有1就為1
<<:表示左移,a<<b,即將a變?yōu)槎M(jìn)制數(shù)后左移b位,簡(jiǎn)單來(lái)說加b個(gè)0.
例子:1<<3為00001000;
總結(jié)
以上是生活随笔為你收集整理的leetcode 1386.安排电影院座位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: main.c(5): warning C
- 下一篇: 移植STM32F051,编译后遇到