73. 矩阵置零
发布人:shili8
发布时间:2025-01-15 10:38
阅读次数:0
**矩阵置零**
在计算机科学中,矩阵置零是指将一个给定的矩阵中的所有元素设置为零。这个问题经常出现在编程竞赛和算法设计中。
**问题描述**
给定一个 m x n 的整数矩阵 mat,要求将其置零,即将所有元素都设置为0。
**示例**
输入:
123456789
输出:
000000000
**解决方案**
### 方法一:使用额外空间我们可以先遍历矩阵,记录每行和列中有多少个元素为零,然后再次遍历矩阵,将这些行和列的元素都设置为零。
def setZeroes(mat): m, n = len(mat), len(mat[0]) # 记录哪些行和列需要置零 rows_to_zero = [False] * m cols_to_zero = [False] * n for i in range(m): for j in range(n): if mat[i][j] ==0: rows_to_zero[i] = True cols_to_zero[j] = True # 将需要置零的行和列设置为零 for i in range(m): for j in range(n): if rows_to_zero[i] or cols_to_zero[j]: mat[i][j] =0 return mat
### 方法二:不使用额外空间我们可以在原矩阵上直接修改,记录哪些行和列需要置零。
def setZeroes(mat): m, n = len(mat), len(mat[0]) # 记录哪些行和列需要置零 for i in range(m): if mat[i][0] ==0: mat[0][0] =0 for j in range(1, n): if mat[0][j] ==0: mat[0][0] =0 for i in range(1, m): for j in range(1, n): if mat[i][j] ==0: mat[i][0] =0 mat[0][j] =0 # 将需要置零的行和列设置为零 for i in range(m): for j in range(n): if mat[i][0] ==0 or mat[0][j] ==0: mat[i][j] =0 return mat
### 方法三:使用Python的numpy库我们可以直接使用numpy的函数来实现矩阵置零。
import numpy as npdef setZeroes(mat): mat = np.array(mat) mat[:, :] =0 return mat.tolist()
**总结**
矩阵置零是一个简单但有用的问题,通过使用额外空间、不使用额外空间或使用numpy库,我们可以轻松实现这个功能。