Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4ce9160

Browse files
committedFeb 28, 2017
add: Set Matrix Zeroes
1 parent 282e5e3 commit 4ce9160

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed
 

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ This is the solution collection of my LeetCode problems, most of them are progra
1818
|48|[Rotate Image](https://leetcode.com/problems/rotate-image/) | [JavaScript](./src/rotate-image/res.js)|Medium|
1919
|66|[Plus One](https://leetcode.com/problems/plus-one/) | [JavaScript](./src/plus-one/res.js)|Easy|
2020
|69|[Sqrt(x)](https://leetcode.com/problems/sqrtx/) | [JavaScript](./src/sqrtx/res.js)|Easy|
21+
|73|[Set Matrix Zeroes](https://leetcode.com/problems/set-matrix-zeroes/) | [JavaScript](./src/set-matrix-zeroes/res.js)|Medium|
2122
|175|[Combine Two Tables](https://leetcode.com/problems/combine-two-tables/)| [SQL](./src/combine-two-tables/res.txt)|Easy|
2223
|176|[Second Highest Salary](https://leetcode.com/problems/second-highest-salary/)| [SQL](./src/second-highest-salary/res.txt)|Easy|
2324
|177|[Nth Highest Salary](https://leetcode.com/problems/nth-highest-salary/)| [SQL](./src/nth-highest-salary/res.txt)|Medium|

‎src/set-matrix-zeroes/res.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/**
2+
* Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
3+
*
4+
* Follow up:
5+
*
6+
* Did you use extra space?
7+
* A straight forward solution using O(mn) space is probably a bad idea.
8+
* A simple improvement uses O(m + n) space, but still not the best solution.
9+
* Could you devise a constant space solution?
10+
*
11+
* res.js
12+
* @authors Joe Jiang (hijiangtao@gmail.com)
13+
* @date 2017-02-28 13:49:19
14+
* @version $Id$
15+
*
16+
* @param {number[][]} matrix
17+
* @return {void} Do not return anything, modify matrix in-place instead.
18+
*/
19+
let setZeroes = function(matrix) {
20+
if (!matrix.length) {
21+
return ;
22+
}
23+
24+
let rowlen = matrix.length,
25+
collen = matrix[0].length,
26+
rowzero = false,
27+
colzero = false;
28+
29+
for (let i=0; i<rowlen; i++) {
30+
for (let j=0; j<collen; j++) {
31+
if (matrix[i][j] === 0) {
32+
matrix[i][0] = 0;
33+
matrix[0][j] = 0;
34+
35+
if (i === 0) {
36+
rowzero = true;
37+
}
38+
if (j === 0) {
39+
colzero = true;
40+
}
41+
}
42+
}
43+
}
44+
45+
for (let i=1; i<rowlen; i++) {
46+
for (let j=1; j<collen; j++) {
47+
if (matrix[i][0] === 0 || matrix[0][j] === 0) {
48+
matrix[i][j] = 0;
49+
}
50+
}
51+
}
52+
53+
if (rowzero) {
54+
for (let i=0; i<collen; i++) {
55+
matrix[0][i] = 0;
56+
}
57+
}
58+
if (colzero) {
59+
for (let i=0; i<rowlen; i++) {
60+
matrix[i][0] = 0;
61+
}
62+
}
63+
};
64+
65+
// Another solution
66+
let setZeroes = function(matrix) {
67+
if (!matrix.length) {
68+
return ;
69+
}
70+
71+
let rowlen = matrix.length,
72+
collen = matrix[0].length,
73+
colzero = false;
74+
75+
for (let i=0; i<rowlen; i++) {
76+
if (matrix[i][0] === 0) {
77+
colzero = true;
78+
}
79+
for (let j=1; j<collen; j++) {
80+
if (matrix[i][j] === 0) {
81+
matrix[i][0] = 0;
82+
matrix[0][j] = 0;
83+
}
84+
}
85+
}
86+
87+
for (let i=rowlen-1; i>=0; i--) {
88+
for (let j=collen-1; j>=1; j--) {
89+
if (matrix[i][0] === 0 || matrix[0][j] === 0) {
90+
matrix[i][j] = 0;
91+
}
92+
}
93+
94+
if (colzero) {
95+
matrix[i][0] = 0;
96+
}
97+
}
98+
};

0 commit comments

Comments
 (0)
Please sign in to comment.