Python程序:计算炸弹爆炸后安全区域的数量
假设我们有一个二维二进制矩阵,其中1表示炸弹,0表示空单元格。当炸弹爆炸时,同一行和同一列的所有空间都会受损。我们必须找到可以站立而不会受损的空间数量。
因此,如果输入如下所示:
1 | 1 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
则输出为2,因为右下角单元格和中间右单元格是安全的。
为了解决这个问题,我们将遵循以下步骤:
r := 一个大小与矩阵行数相同的列表,并填充为false
c := 一个大小与矩阵列数相同的列表,并填充为false
对于范围从0到矩阵行数-1的i:
对于范围从0到矩阵列数-1的j:
如果matrix[i, j]等于1,则
r[i] := True,c[j] := True
ct := 0
对于范围从0到矩阵行数-1的i:
对于范围从0到矩阵列数-1的j:
如果r[i]为False且c[j]为False,则
ct := ct + 1
返回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
广告