Skip to content

Commit f5488aa

Browse files
Create 1568-minimum-number-of-days-to-disconnect-island.java
1 parent 9993b1c commit f5488aa

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*------------------------------------
2+
Time complexity: (m*n)^2
3+
Space complexity: (m*n)
4+
------------------------------------*/
5+
6+
class Solution {
7+
public int minDays(int[][] grid) {
8+
if(count_lands(grid) != 1)
9+
return 0;
10+
11+
for(int r = 0; r < grid.length; r++){
12+
for(int c = 0; c < grid[r].length; c++){
13+
if(grid[r][c] == 0)
14+
continue;
15+
16+
grid[r][c] = 0;
17+
if(count_lands(grid) != 1)
18+
return 1;
19+
20+
grid[r][c] = 1;
21+
}
22+
}
23+
24+
return 2;
25+
}
26+
private void dfs(int[][] grid, int r, int c, Set<String> visited){
27+
if(r < 0 || c < 0 || r >= grid.length || c >= grid[r].length || grid[r][c] == 0)
28+
return;
29+
30+
String pos = r + "," + c;
31+
if(visited.contains(pos))
32+
return;
33+
34+
visited.add(pos);
35+
36+
dfs(grid, r+1, c, visited);
37+
dfs(grid, r, c+1, visited);
38+
dfs(grid, r-1, c, visited);
39+
dfs(grid, r, c-1, visited);
40+
}
41+
42+
private int count_lands(int[][] grid){
43+
Set<String> visited = new HashSet<>();
44+
int count = 0;
45+
46+
for(int r = 0; r < grid.length; r++){
47+
for(int c = 0; c < grid[r].length; c++){
48+
if(grid[r][c] == 1 && !visited.contains(r + "," + c)){
49+
dfs(grid, r, c, visited);
50+
count += 1;
51+
}
52+
}
53+
}
54+
55+
return count;
56+
}
57+
}

0 commit comments

Comments
 (0)