5349. 安排电影院座位

如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 。

给你数组 reservedSeats ,包含所有已经被预约了的座位。比如说,researvedSeats[i]=[3,8] ,它表示第 3 行第 8 个座位被预约了。

请你返回 最多能安排多少个 4 人家庭 。4 人家庭要占据 同一行内连续 的 4 个座位。隔着过道的座位(比方说 [3,3] 和 [3,4])不是连续的座位,但是如果你可以将 4 人家庭拆成过道两边各坐 2 人,这样子是允许的。

class Solution:
    def maxNumberOfFamilies(self, n: int, reservedSeats: List[List[int]]) -> int:
        res = 0
        reservedSeats.sort(key=lambda x:x[0])
        k=0
        for i in range(n):
            nums  = [0 for _ in range(10)]
            while k<len(reservedSeats) and (reservedSeats[k][0]-1)==i:
                nums[reservedSeats[k][1]-1]=1
                k+=1
            if sum(nums[1:5])==0:
                res+=1
                nums[4]=1
            if sum(nums[3:7])==0:
                res+=1
                nums[6]=1
            if sum(nums[5:9])==0:
                res+=1
                nums[8]=1
        return res

class Solution(object):
    def maxNumberOfFamilies(self, n, reservedSeats):
        nums  = [[0 for _ in range(10)] for _ in range(n)]
        res = 0
        for one in reservedSeats:
            nums[one[0]-1][one[1]-1] = 1
        for i in range(n):
            if sum(nums[i][1:5])==0:
                res+=1
                nums[i][4]=1
            if sum(nums[i][3:7])==0:
                res+=1
                nums[i][6]=1
            if sum(nums[i][5:9])==0:
                res+=1
                nums[i][8]=1
        return res
发布了216 篇原创文章 · 获赞 17 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_36328915/article/details/105033044