南昌网站建设品牌,超链接到网站怎么做视频文件,做图片网站 侵权,滨海县网站建设如上图所示#xff0c;电影院的观影厅中有 n 行座位#xff0c;行编号从 1 到 n #xff0c;且每一行内总共有 10 个座位#xff0c;列编号从 1 到 10 。
给你数组 reservedSeats #xff0c;包含所有已经被预约了的座位。比如说#xff0c;researvedSeats[i][3,8] 电影院的观影厅中有 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 idx0,ans0;Arrays.sort(reservedSeats, new Comparatorint[]() {//按行排序Overridepublic int compare(int[] o1, int[] o2) {return o1[0]-o2[0];}});for(int i1;in;i){boolean f1false,f2false,f3false,f4false;//表示每一个行的23 45 67 89位置有没有被预订while (idxreservedSeats.lengthreservedSeats[idx][0]i)//检查该行被预订的位置{switch (reservedSeats[idx][1]){case 2:case 3:f1true;break;case 4:case 5:f2true;break;case 6:case 7:f3true;break;case 8:case 9:f4true;break;}idx;}if(!f1!f2!f3!f4)//可以坐两个人家庭{ans2;}else if(!f1!f2||!f3!f4||!f2!f3) ans;//只能坐一个家庭if(idxreservedSeats.length)//已经全部遍历了订票的位置退出{ans(n-i)*2;//没有订票的行最多可以坐两个家庭break;}}return ans;}
}