Skip to content

Commit 73c2a0f

Browse files
[N-0] add 695
1 parent 712f4fe commit 73c2a0f

File tree

3 files changed

+100
-0
lines changed

3 files changed

+100
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Your ideas/fixes/algorithms are more than welcome!
2222

2323
| # | Title | Solutions | Time | Space | Difficulty | Tag | Notes
2424
|-----|----------------|---------------|---------------|---------------|-------------|--------------|-----
25+
|695|[Max Area of Island](https://leetcode.com/problems/max-area-of-island/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_695.java) | O(m*n) | O(1) | Easy | DFS
2526
|693|[Binary Number with Alternating Bits](https://leetcode.com/problems/binary-number-with-alternating-bits/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_693.java) | O(n) | O(1) | Easy |
2627
|690|[Employee Importance](https://leetcode.com/problems/employee-importance/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_690.java) | O(n) | O(h) | Easy | DFS
2728
|688|[Knight Probability in Chessboard](https://leetcode.com/problems/knight-probability-in-chessboard/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_688.java) | O(n^2) | O(n^2) | Medium | DP
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.fishercoder.solutions;
2+
3+
/**
4+
* 695. Max Area of Island
5+
*
6+
* Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land)
7+
* connected 4-directionally (horizontal or vertical.)
8+
* You may assume all four edges of the grid are surrounded by water.
9+
* Find the maximum area of an island in the given 2D array. (If there is no island, the maximum area is 0.)
10+
11+
Example 1:
12+
13+
[[0,0,1,0,0,0,0,1,0,0,0,0,0],
14+
[0,0,0,0,0,0,0,1,1,1,0,0,0],
15+
[0,1,1,0,1,0,0,0,0,0,0,0,0],
16+
[0,1,0,0,1,1,0,0,1,0,1,0,0],
17+
[0,1,0,0,1,1,0,0,1,1,1,0,0],
18+
[0,0,0,0,0,0,0,0,0,0,1,0,0],
19+
[0,0,0,0,0,0,0,1,1,1,0,0,0],
20+
[0,0,0,0,0,0,0,1,1,0,0,0,0]]
21+
22+
Given the above grid, return 6. Note the answer is not 11, because the island must be connected 4-directionally.
23+
24+
Example 2:
25+
26+
[[0,0,0,0,0,0,0,0]]
27+
28+
Given the above grid, return 0.
29+
30+
Note: The length of each dimension in the given grid does not exceed 50.
31+
*/
32+
33+
public class _695 {
34+
35+
public int maxAreaOfIsland(int[][] grid) {
36+
if (grid == null || grid.length == 0) {
37+
return 0;
38+
}
39+
int m = grid.length;
40+
int n = grid[0].length;
41+
int max = 0;
42+
for (int i = 0; i < m; i++) {
43+
for (int j = 0; j < n; j++) {
44+
if (grid[i][j] == 1) {
45+
int area = dfs(grid, i, j, m, n, 0);
46+
max = Math.max(area, max);
47+
}
48+
}
49+
}
50+
return max;
51+
}
52+
53+
int dfs(int[][] grid, int i, int j, int m, int n, int area) {
54+
if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] == 0) {
55+
return area;
56+
}
57+
grid[i][j] = 0;
58+
area++;
59+
area = dfs(grid, i + 1, j, m, n, area);
60+
area = dfs(grid, i, j + 1, m, n, area);
61+
area = dfs(grid, i - 1, j, m, n, area);
62+
area = dfs(grid, i, j - 1, m, n, area);
63+
return area;
64+
}
65+
66+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.solutions._695;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
7+
import static junit.framework.TestCase.assertEquals;
8+
9+
public class _695Test {
10+
private static _695 test;
11+
private static int[][] grid;
12+
13+
@Before
14+
public void setup() {
15+
test = new _695();
16+
}
17+
18+
@Test
19+
public void test1() {
20+
grid = new int[][]{
21+
{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
22+
{0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0},
23+
{0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
24+
{0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0},
25+
{0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0},
26+
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
27+
{0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0},
28+
{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}
29+
};
30+
assertEquals(6, test.maxAreaOfIsland(grid));
31+
}
32+
33+
}

0 commit comments

Comments
 (0)