-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFind_All_Groups_of_Farmland.java
More file actions
60 lines (59 loc) · 1.55 KB
/
Find_All_Groups_of_Farmland.java
File metadata and controls
60 lines (59 loc) · 1.55 KB
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
50
51
52
53
54
55
56
57
58
59
60
import java.util.*;
import java.io.*;
import java.lang.*;
public class Find_All_Groups_of_Farmland {
class Solution {
public int[][] findFarmland(int[][] land)
{
int m = land.length;
int n = land[0].length;
ArrayList<int[]> al = new ArrayList<>();
for(int i = 0 ; i<m ; i++)
{
for(int j = 0 ; j<n ; j++)
{
if(land[i][j] == 1)
{
int[] a = {i , j , i , j};
dfs(i , j , a , land);
al.add(a);
}
}
}
int[][] ans = new int[al.size()][4];
for(int i = 0 ; i<al.size() ; i++)
{
ans[i] = al.get(i);
}
return ans;
}
public static void dfs(int i , int j , int[] a , int[][] land)
{
if(i<0 || i>land.length-1 || j<0 || j>land[0].length-1 || land[i][j] == 0)
{
return;
}
land[i][j] = 0;
if(i<a[0])
{
a[0] = i;
}
if(j<a[1])
{
a[1] = j;
}
if(i>a[2])
{
a[2] = i;
}
if(j>a[3])
{
a[3] = j;
}
dfs(i-1 , j , a , land);
dfs(i+1 , j , a , land);
dfs(i , j-1 , a , land);
dfs(i , j+1 , a , land);
}
}
}