Skip to content

Commit

Permalink
Merge pull request #39 from ignacio-chiazzo/maxAreaOfIsland
Browse files Browse the repository at this point in the history
Max area of island
  • Loading branch information
ignacio-chiazzo authored Oct 29, 2020
2 parents 9656e10 + 45cab44 commit 92c7447
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 1 deletion.
52 changes: 52 additions & 0 deletions LeetcodeProblems/Max_Area_Of_Island.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
Max Area of Island
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.
Find the maximum area of an island in the given 2D array. (If there is no island, the maximum area is 0.)
Example 1:
[[0,0,1,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,1,0,0,1,1,0,0,1,0,1,0,0],
[0,1,0,0,1,1,0,0,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Given the above grid, return 6. Note the answer is not 11, because the island must be connected 4-directionally.
Example 2:
[[0,0,0,0,0,0,0,0]]
Given the above grid, return 0.
Note: The length of each dimension in the given grid does not exceed 50.
*/

/**
* @param {number[][]} grid
* @return {number}
*/
var maxAreaOfIsland = function(grid) {
var maxArea = 0;

for(var i = 0; i < grid.length; i++) {
for(var j = 0; j < grid[0].length; j++) {
maxArea = Math.max(markIsland(i, j, grid), maxArea);
}
}

return maxArea;
};

var markIsland = function(row, col, grid) {
if(row < 0 || row >= grid.length || col < 0 || col >= grid[0].length || grid[row][col] == 0) {
return 0;
}

grid[row][col] = 0;
return 1 + markIsland(row + 1, col, grid) + markIsland(row - 1, col, grid)
+ markIsland(row, col +1, grid) + markIsland(row, col - 1, grid);
}

module.exports.maxAreaOfIsland = maxAreaOfIsland;
51 changes: 51 additions & 0 deletions LeetcodeProblemsTests/Max_Area_Of_Island_Test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const assert = require('assert');
const { maxAreaOfIsland } = require('../LeetcodeProblems/Max_Area_Of_Island');

function test1() {
var matrix = [
[0,0,1,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,1,0,0,1,1,0,0,1,0,1,0,0],
[0,1,0,0,1,1,0,0,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,0,0,0,0]
]

assert.strictEqual(maxAreaOfIsland(matrix), 6);
}

function test2() {
var matrix = [
[0, 1, 1, 0, 0],
[0, 1, 1, 0, 0],
[0, 0, 1, 0, 1],
[0, 1, 0, 0, 1],
[0, 1, 1, 0, 1],
[0, 0, 0, 0, 0],
]

assert.strictEqual(maxAreaOfIsland(matrix), 5);
}

function test3() {
var matrix = [
[0, 1, 0, 0, 0],
[0, 1, 1, 1, 1],
[0, 0, 0, 0, 1],
[0, 1, 1, 1, 1],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0],
]

assert.strictEqual(maxAreaOfIsland(matrix), 11);
}

function test() {
test1();
test2();
test3();
}

module.exports.test = test
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ To run a specific problem in your console, go to the file test, add the call to
| [Group Anagrams ](/LeetcodeProblems/Group_Anagrams.js) | Medium | https://leetcode.com/problems/group-anagrams/
| [Kth Largest Element in an Array ](/LeetcodeProblems/Kth_Largest_Element_in_an_Array.js) | Medium | https://leetcode.com/problems/kth-largest-element-in-an-array/ |
| [Linked List Cycle II ](/LeetcodeProblems/Linked_List_Cycle_II.js) | Medium | https://leetcode.com/problems/linked-list-cycle-ii/ |
| [Longest Palindromic Substring ](/LeetcodeProblems/Longest_Palindromic_Substring.js) | Medium | https://leetcode.com/problems/longest-palindromic-substring/ |
| [Longest Palindromic Substring ](/LeetcodeProblems/Longest_Palindromic_Substring.js) | Medium | https://leetcode.com/problems/longest-palindromic-substring/|
| [Max Area Of Island](https://leetcode.com/problems/max-area-of-island/) | Medium | https://leetcode.com/problems/max-area-of-island/ |
| [Maximal Square ](/LeetcodeProblems/Maximal_Square.js) | Medium | https://leetcode.com/problems/maximal-square/ |
| [Permutations ](/LeetcodeProblems/Permutations.js) | Medium | https://leetcode.com/problems/permutations/ |
| [Permutations II ](/LeetcodeProblems/Permutations_II.js) | Medium | https://leetcode.com/problems/permutations-ii/ |
Expand Down

0 comments on commit 92c7447

Please sign in to comment.