diff --git a/LeetcodeProblems/Max_Area_Of_Island.js b/LeetcodeProblems/Max_Area_Of_Island.js
new file mode 100644
index 0000000..32c82a2
--- /dev/null
+++ b/LeetcodeProblems/Max_Area_Of_Island.js
@@ -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;
diff --git a/LeetcodeProblemsTests/Max_Area_Of_Island_Test.js b/LeetcodeProblemsTests/Max_Area_Of_Island_Test.js
new file mode 100644
index 0000000..d243dce
--- /dev/null
+++ b/LeetcodeProblemsTests/Max_Area_Of_Island_Test.js
@@ -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
diff --git a/README.md b/README.md
index 342de61..ba3cb71 100644
--- a/README.md
+++ b/README.md
@@ -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/ |