73. 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/set-matrix-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
标记数组
class Solution {
public void setZeroes(int[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return;
}
boolean[] row = new boolean[matrix.length];
boolean[] col = new boolean[matrix[0].length];
for (int i = 0; i < matrix.length; ++i) {
for (int j = 0; j < matrix[0].length; ++j) {
if (matrix[i][j] == 0) {
row[i] = col[j] = true;
}
}
}
for (int i = 0; i < matrix.length; ++i) {
for (int j = 0; j < matrix[0].length; ++j) {
if (row[i] || col[j]) {
matrix[i][j] = 0;
}
}
}
}
}
标记变量
class Solution {
public void setZeroes(int[][] matrix) {
boolean col0_flag = false;
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
if (matrix[i][0] == 0) col0_flag = true;
for (int j = 1; j < col; j++) {
if (matrix[i][j] == 0) {
matrix[i][0] = matrix[0][j] = 0;
}
}
}
for (int i = row - 1; i >= 0; i--) {
for (int j = col - 1; j >= 1; j--) {
if (matrix[i][0] == 0 || matrix[0][j] == 0) {
matrix[i][j] = 0;
}
}
if (col0_flag) matrix[i][0] = 0;
}
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号