「每日LeetCode」2022年9月30日

本文最后更新于:2023年3月19日 晚上

面试题 01.08. 零矩阵

面试题 01.08. 零矩阵

输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
编写一种算法,若 M × N 矩阵中某个元素为 0,则将其所在的行与列清零。

示例 1:
输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var setZeroes = function (matrix) {
const arr = [];
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
const num = matrix[i][j];
if (num === 0) arr.push([i, j]);
}
}
while (arr.length) {
const [x, y] = arr.pop();
for (let i = 0; i < matrix.length; i++) {
matrix[i][y] = 0;
}
for (let j = 0; j < matrix[x].length; j++) {
matrix[x][j] = 0;
}
}
return matrix;
};