1 /**
2 * @param {number[][]} matrix
3 * @return {void} Do not return anything, modify matrix in-place instead.
4 */
5 const setZeroes = function (matrix) {
6 const yLen = matrix.length;
7 const xLen = matrix[0].length;
8 for (let i = 0; i < yLen; i++) {
9 let left = 0;
10 let right = 0;
11 for (; right < xLen; right++) {
12 if (matrix[i][right] === 0 || matrix[i][right] === '0') {
13 if (matrix[i][right] === 0) {
14 for (let k = 0; k < i; k++) {
15 matrix[k][right] = null;
16 }
17 for (let k = i + 1; k < yLen; k++) {
18 if (matrix[k][right] === 0) {
19 matrix[k][right] = '0';
20 } else {
21 matrix[k][right] = null;
22 }
23 }
24 }
25 for (let j = left; j < right; j++) {
26 matrix[i][j] = null;
27 }
28 for (; right < xLen - 1; right++) {
29 if (matrix[i][right + 1] === 0) {
30 break;
31 }
32 matrix[i][right + 1] = null;
33 }
34 left = right;
35 }
36 }
37 }
38 for (let i = 0; i < yLen; i++) {
39 for (let j = 0; j < xLen; j++) {
40 matrix[i][j] = Number(matrix[i][j]);
41 }
42 }
43 return matrix;
44
45 };