在 Python 中设置矩阵零点
pythonserver side programmingprogramming更新于 2025/11/22 16:12:17
假设我们有一个矩阵,如果该矩阵中有一个元素为 0,则将该矩阵的整行和整列都设为 0。转换将就地进行。因此,如果矩阵为 −
| 1 | 0 | 1 |
| 1 | 1 | |
| 1 | 1 |
则输出为 −
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 1 | 0 | 1 |
让我们看看步骤 −
- n := 行数,m := 数量列,设置标志 := false
- 如果 mat[0, 0] = 0,则设置标志 := true
- 设置行 := false,并且 col := false
- 对于 i 在 1 到 n 范围内
- 如果 mat[i, 0] = 0,则设置 col := True 并中断循环
- 对于 i 在 1 到 m 范围内
- 如果 mat[0, i] = 0,则设置行 := True 并中断循环
- 对于 i 在 1 到 n 范围内
- 对于 j 在 1 到 m 范围内
- 如果 mat[i, j] = 0,则设置 mat[i, 0] = 0 并且 mat[0, j] := 0
- 对于 j 在 1 到 m 范围内
- 对于范围在 1 到 n 内的 i
- 对于范围在 1 到 m 内的 j
- 如果 mat[i, 0] = 0 且 mat[0, j] = 0,则设置 mat[i, j] = 0
- 对于范围在 1 到 m 内的 j
- 如果设置了标志
- 对于范围在 0 到 n 内的 i,mat [i, 0] := 0
- 对于范围在 0 到 m 内的 i,mat[0, i] := 0
- 否则
- 如果设置了 col,则对于范围在 0 到 n 内的 i,mat [i, 0] := 0
- 如果设置了 row,则对于范围在 0 到 m 内的 i,mat [0, i] := 0
让我们看看下面的实现以便更好地理解 −
示例
class Solution(object): def setZeroes(self, matrix): n = len(matrix) m = len(matrix[0]) flag = False if matrix[0][0] == 0: flag = True row = False column = False for i in range(1,n): if matrix[i][0] == 0: column = True break for i in range(1,m): if matrix[0][i] == 0: row = True break for i in range(1,n): for j in range(1,m): if matrix[i][j] == 0: matrix[0][j] = 0 matrix[i][0]=0 for i in range(1,n): for j in range(1,m): if not matrix[i][0] or not matrix[0][j]: matrix[i][j] = 0 if flag: for i in range(n): matrix[i][0] = 0 for i in range(m): matrix[0][i]=0 else: if column: for i in range(n): matrix[i][0]=0 if row: for i in range(m): matrix[0][i]=0 return matrix ob1 = Solution() print(ob1.setZeroes([[1,0,1],[1,1,1],[1,1,1]]))
输入
[[1,0,1],[1,1,1],[1,1,1]]
输出
[[0, 0, 0], [1, 0, 1], [1, 0, 1]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

