73. 矩阵置零
- 题号:73
- 来源:LeetCode
- 难度:中等
- 标签:
矩阵哈希表数组 - 语言:TypeScript · Python
- 解法:2 个
- 作者:lmliheng
- 最近更新:2026-09-29
TypeScript
TypeScript · O(n*m*(n+m)) 时间 · O(n*m) 空间 · 更新于 2026-09-27
先记录 0 的位置,再置零所在行列
typescript
/**
* @difficulty medium
* @tags 矩阵,哈希表
* @time O(n*m*(n+m))
* @space O(n*m)
* @note 先记录 0 的位置,再置零所在行列
* @73. 矩阵置零
*/
let matrix = [[1, 1, 1], [1, 0, 1], [1, 1, 1]]
let set = new Set()
let row = matrix.length
let col = matrix[0].length
const removeRowCol = (x: number, y: number) => {
// col
for (let i = 0; i < row; i++) {
matrix[i][y] = 0
}
//row
for (let i = 0; i < col; i++) {
matrix[x][i] = 0
}
}
for (let i = 0; i < row; i++) {
for (let j = 0; j < col; j++) {
if (matrix[i][j] === 0) {
set.add(`${i},${j}`)
}
}
}
for (let i = 0; i < row; i++) {
for (let j = 0; j < col; j++) {
if (set.has(`${i},${j}`)) {
removeRowCol(i, j)
}
}
}
console.log(matrix)Python
Python · O(z*(m+n)) 时间 · O(z) 空间 · 更新于 2026-09-29
先记下所有 0 的位置再逐行逐列置零(z 是 0 的个数);标准做法能压到 O(m*n)
python
"""
@lc 73
@title 矩阵置零
@difficulty medium
@tags 矩阵,数组
@time O(z*(m+n))
@space O(z)
@note 先记下所有 0 的位置再逐行逐列置零(z 是 0 的个数);标准做法能压到 O(m*n)
"""
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
zero=[]
m=len(matrix)
n=len(matrix[0])
for i in range(0,m):
for j in range(0,n):
if matrix[i][j]==0:
zero.append([i,j])
print(zero)
for i in range(len(zero)):
for r in range(0,m):
matrix[r][zero[i][1]]=0
for c in range(0,n):
matrix[zero[i][0]][c]=0源码:python/leetcode/hot100/18.py
在 GitHub 上查看题目所在目录:lmliheng/algorithm