#include <stdbool.h>
#include <stdlib.h>
void setZeroes(int **matrix, int matrixSize, int *matrixColSize) {
int m = matrixSize, n = matrixColSize[0];
bool *zeroRow = calloc(m, sizeof(bool));
bool *zeroCol = calloc(n, sizeof(bool));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (matrix[i][j] == 0)
zeroRow[i] = zeroCol[j] = true;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (zeroRow[i] || zeroCol[j])
matrix[i][j] = 0;
free(zeroRow);
free(zeroCol);
}
#include <vector>
using namespace std;
class Solution {
public:
void setZeroes(vector<vector<int>> &matrix) {
int m = matrix.size(), n = matrix[0].size();
vector<bool> zeroRow(m, false), zeroCol(n, false);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (matrix[i][j] == 0)
zeroRow[i] = zeroCol[j] = true;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (zeroRow[i] || zeroCol[j])
matrix[i][j] = 0;
}
};
package mathgeometry
func setZeroes(matrix [][]int) {
m, n := len(matrix), len(matrix[0])
zeroRow, zeroCol := make([]bool, m), make([]bool, n)
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if matrix[i][j] == 0 {
zeroRow[i], zeroCol[j] = true, true
}
}
}
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if zeroRow[i] || zeroCol[j] {
matrix[i][j] = 0
}
}
}
}
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length, n = matrix[0].length;
boolean[] zeroRow = new boolean[m], zeroCol = new boolean[n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (matrix[i][j] == 0)
zeroRow[i] = zeroCol[j] = true;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (zeroRow[i] || zeroCol[j])
matrix[i][j] = 0;
}
}
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var setZeroes = function (matrix) {
const m = matrix.length, n = matrix[0].length;
const zeroRow = new Array(m).fill(false), zeroCol = new Array(n).fill(false);
for (let i = 0; i < m; i++)
for (let j = 0; j < n; j++)
if (matrix[i][j] === 0) zeroRow[i] = zeroCol[j] = true;
for (let i = 0; i < m; i++)
for (let j = 0; j < n; j++)
if (zeroRow[i] || zeroCol[j]) matrix[i][j] = 0;
};
from typing import List
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
m, n = len(matrix), len(matrix[0])
zero_row, zero_col = [False] * m, [False] * n
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
zero_row[i] = zero_col[j] = True
for i in range(m):
for j in range(n):
if zero_row[i] or zero_col[j]:
matrix[i][j] = 0
impl Solution {
pub fn set_zeroes(matrix: &mut Vec<Vec<i32>>) {
let (m, n) = (matrix.len(), matrix[0].len());
let (mut zero_row, mut zero_col) = (vec![false; m], vec![false; n]);
for i in 0..m {
for j in 0..n {
if matrix[i][j] == 0 {
zero_row[i] = true;
zero_col[j] = true;
}
}
}
for i in 0..m {
for j in 0..n {
if zero_row[i] || zero_col[j] {
matrix[i][j] = 0;
}
}
}
}
}