leetcode 73
思路
- 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中
- 置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0
具体步骤
- 初始化变量:获取矩阵的行数aLen和列数bLen,并创建空数组zeroPosition来存储 0 元素的坐标
- 查找 0 元素:使用双重循环遍历矩阵,当发现元素为 0 时,将其行列坐标[i, j]存入zeroPosition
- 置零操作:遍历zeroPosition数组,对每个坐标[x, y],将第x行和第y列的所有元素置为 0
实现
var setZeroes = function (matrix) {
const aLen = matrix.length;
const bLen = matrix[0].length;
const zeroPosition = []; // 0的位置
// 查找为0元素的坐标
for (let i = 0; i < aLen; i++) {
for (let j = 0; j < bLen; j++) {
if (matrix[i][j] === 0) {
zeroPosition.push([i, j])
}
}
}
// 设置0操作
for (let i = 0; i < zeroPosition.length; i++) {
const x = zeroPosition[i][0]
const y = zeroPosition[i][1]
for (let j = 0; j < aLen; j++) {
matrix[j][y] = 0
}
for (let j = 0; j < bLen; j++) {
matrix[x][j] = 0
}
}
return matrix
};