-
Notifications
You must be signed in to change notification settings - Fork 0
/
073.go
49 lines (43 loc) · 916 Bytes
/
073.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package p073
/**
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
*/
func setZeroes(matrix [][]int) {
if len(matrix) == 0 {
return
}
m, n := len(matrix), len(matrix[0])
fr, fc := false, false
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if matrix[i][j] == 0 {
fr = fr || (i == 0)
fc = fc || (j == 0)
matrix[i][0] = 0
matrix[0][j] = 0
}
}
}
for i := 1; i < m; i++ {
for j := 1; j < n; j++ {
if matrix[i][0] == 0 || matrix[0][j] == 0 {
matrix[i][j] = 0
}
}
}
if fr {
for j := 0; j < n; j++ {
matrix[0][j] = 0
}
}
if fc {
for i := 0; i < m; i++ {
matrix[i][0] = 0
}
}
}