日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode1386. 安排电影院座位(贪心)

發布時間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode1386. 安排电影院座位(贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如上圖所示,電影院的觀影廳中有 n 行座位,行編號從 1 到 n ,且每一行內總共有 10 個座位,列編號從 1 到 10 。

給你數組 reservedSeats ,包含所有已經被預約了的座位。比如說,researvedSeats[i]=[3,8] ,它表示第 3 行第 8 個座位被預約了。

請你返回 最多能安排多少個 4 人家庭 。4 人家庭要占據 同一行內連續 的 4 個座位。隔著過道的座位(比方說 [3,3] 和 [3,4])不是連續的座位,但是如果你可以將 4 人家庭拆成過道兩邊各坐 2 人,這樣子是允許的。

代碼

class Solution {public int maxNumberOfFamilies(int n, int[][] reservedSeats) {int idx=0,ans=0;Arrays.sort(reservedSeats, new Comparator<int[]>() {//按行排序@Overridepublic int compare(int[] o1, int[] o2) {return o1[0]-o2[0];}});for(int i=1;i<=n;i++){boolean f1=false,f2=false,f3=false,f4=false;//表示每一個行的23 45 67 89位置有沒有被預訂while (idx<reservedSeats.length&&reservedSeats[idx][0]==i)//檢查該行被預訂的位置{switch (reservedSeats[idx][1]){case 2:case 3:f1=true;break;case 4:case 5:f2=true;break;case 6:case 7:f3=true;break;case 8:case 9:f4=true;break;}idx++;}if(!f1&&!f2&&!f3&&!f4)//可以坐兩個人家庭{ans+=2;}else if(!f1&&!f2||!f3&&!f4||!f2&&!f3) ans++;//只能坐一個家庭if(idx==reservedSeats.length)//已經全部遍歷了訂票的位置,退出{ans+=(n-i)*2;//沒有訂票的行最多可以坐兩個家庭break;}}return ans;} }

總結

以上是生活随笔為你收集整理的leetcode1386. 安排电影院座位(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。