Skip to content

Commit 7e67de4

Browse files
authored
Create week 5 542. 01 Matrix
1 parent d198ab5 commit 7e67de4

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

week 5 542. 01 Matrix

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
public class Solution {
2+
int row;
3+
int col;
4+
5+
int [] dx = {1, -1, 0, 0};
6+
int [] dy = {0, 0, 1, -1};
7+
8+
public List<List<Integer>> updateMatrix(List<List<Integer>> matrix){
9+
10+
if (matrix == null || matrix.size() == 0 || matrix.get(0).size() == 0){
11+
return matrix;
12+
}
13+
row = matrix.size();
14+
col = matrix.get(0).size();
15+
preSet(matrix);
16+
17+
for(int i = 0; i < row; i++){
18+
for(int j = 0; j < col; j++){
19+
if(matrix.get(i).get(j) == 1){
20+
helper (matrix, 1, i, j);
21+
}
22+
}
23+
}
24+
return matirx;
25+
}
26+
}
27+
public void preSet(List<List<Integer>> matrix){
28+
for (int i = 0; i < row; i++){
29+
for (int j = 0; j < col; j++){
30+
31+
if(matrix.get(i).get(j)==0){
32+
continue;
33+
}
34+
35+
boolean flag = false;
36+
for (int k = 0; k < 4; k++){
37+
int x = i + dx[k];
38+
int y = j + dy[k];
39+
if (x < 0 || x >= row || y < 0 || y >= col){
40+
continue;
41+
}
42+
flag |= matrix.get(x).get(y) == 0;
43+
}
44+
if(!flag){
45+
matrix.get(i).set(j, Integer.MAX_VALUE);
46+
}
47+
48+
}
49+
}
50+
}
51+
52+
public void helper (List<List<Integer>> matrix, int dist, int x, int y){
53+
if (matrix.get(x).get(y) < dist){
54+
return;
55+
}
56+
if(matrix.get(x).get(y) == dist && matrix.get(x).get(y) != 1){
57+
return;
58+
}
59+
matrix.get(x).set(y, dist);
60+
61+
for(int i = 0; i < 4; i++){
62+
int xNext = x + dx[i];
63+
int yNext = y + dy[i];
64+
if(xNext < 0 || xNext >= row || yNext < 0 || yNext >= col ){
65+
continue;
66+
}
67+
helper(matrix, dist + 1, xNext, yNext);
68+
}
69+
}

0 commit comments

Comments
 (0)