Skip to content

Commit 4abf58d

Browse files
Add 695 in c language
1 parent 825a25b commit 4abf58d

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Diff for: c/695-Max-Area-of-Island.c

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
Return the maximum area of an island in grid. If there is no island, return 0.
3+
Time: O(n^2)
4+
Space: O(1)
5+
6+
*/
7+
8+
int max(int a, int b) {
9+
return a>b?a:b;
10+
}
11+
12+
int dfs(int** grid, int n, int m, int i, int j) {
13+
int cpt=1;
14+
grid[i][j]=0;
15+
if (i>0 && grid[i-1][j]==1)
16+
cpt += dfs(grid, n, m, i-1, j);
17+
if (j>0 && grid[i][j-1]==1)
18+
cpt += dfs(grid, n, m, i, j-1);
19+
if (i<(n-1) && grid[i+1][j]==1)
20+
cpt += dfs(grid, n, m, i+1, j);
21+
if (j<(m-1) && grid[i][j+1]==1)
22+
cpt += dfs(grid, n, m, i, j+1);
23+
return cpt;
24+
}
25+
26+
int maxAreaOfIsland(int** grid, int gridSize, int* gridColSize){
27+
int m = 0, h=*gridColSize, i, j;
28+
for (i=0; i<gridSize; i++) {
29+
for (j=0; j<h; j++) {
30+
if (grid[i][j]==1)
31+
m = max(m, dfs(grid, gridSize, h, i, j));
32+
}
33+
}
34+
return m;
35+
}

0 commit comments

Comments
 (0)