假设我们有一个二维二进制矩阵,其中1表示炸弹,0表示空单元。炸弹爆炸时,同一行和同一列上的所有空间均被破坏。我们必须找到可以站立的空间数量而不会受到损坏。
所以,如果输入像
1 | 1 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
那么输出将为2,因为在右下角单元格和右中角单元格有两个空格是安全的。
为了解决这个问题,我们将按照以下步骤操作:
r:=列表的大小与矩阵的行数相同,并用false填充
c:=与矩阵的列数相同的大小列表,并用false填充
对于范围从0到矩阵的行计数的i,执行1
如果matrix [i,j]与1相同,则
r [i]:=真,c [j]:=真
对于范围0到矩阵1的列数的j,执行
ct:= 0
对于范围从0到矩阵的行计数的i,执行1
如果r [i]为False,而c [j]为False,则
ct:= ct + 1
对于范围0到矩阵1的列数的j,执行
返回ct
让我们看下面的实现以更好地理解:
class Solution: def solve(self, matrix): r = [False for i in range(len(matrix))] c = [False for i in range(len(matrix[0]))] for i in range(len(matrix)): for j in range(len(matrix[0])): if matrix[i][j] == 1: r[i] = True c[j] = True ct = 0 for i in range(len(matrix)): for j in range(len(matrix[0])): if r[i] == False and c[j] == False: ct += 1 return ct ob = Solution()matrix = [ [1, 1, 0], [0, 0, 0], [0, 0, 0] ] print(ob.solve(matrix))
[ [1, 1, 0], [0, 0, 0], [0, 0, 0] ]
输出结果
2