diff --git a/695-max-area-of-island/memo.md b/695-max-area-of-island/memo.md new file mode 100644 index 0000000..d26e165 --- /dev/null +++ b/695-max-area-of-island/memo.md @@ -0,0 +1,11 @@ +### step1 + +200. Number of Islandsを参考に、1のマスに当たるたびに隣接するマスを辿ってareaの大きさを計算する方針で実装。 + +### step2 + +fという関数の名前をcountAreaに変更。 + +### step3 + +3回通すまで書き直し。 diff --git a/695-max-area-of-island/step1.cpp b/695-max-area-of-island/step1.cpp new file mode 100644 index 0000000..06d55cf --- /dev/null +++ b/695-max-area-of-island/step1.cpp @@ -0,0 +1,32 @@ +class Solution { +public: + int m, n; + + void f(vector>& grid, int x, int y, int& val) { + if (x < 0 || x >= m || y < 0 || y >= n || grid[x][y] == 0) { + return; + } + grid[x][y] = 0; + val++; + f(grid, x + 1, y, val); + f(grid, x - 1, y, val); + f(grid, x, y + 1, val); + f(grid, x, y - 1, val); + } + + int maxAreaOfIsland(vector>& grid) { + m = grid.size(); + n = grid[0].size(); + int maxArea = 0; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (grid[i][j] == 1) { + int val = 0; + f(grid, i, j, val); + maxArea = max(maxArea, val); + } + } + } + return maxArea; + } +}; diff --git a/695-max-area-of-island/step2.cpp b/695-max-area-of-island/step2.cpp new file mode 100644 index 0000000..265ea30 --- /dev/null +++ b/695-max-area-of-island/step2.cpp @@ -0,0 +1,32 @@ +class Solution { +public: + int m, n; + + void countArea(vector>& grid, int x, int y, int& val) { + if (x < 0 || x >= m || y < 0 || y >= n || grid[x][y] == 0) { + return; + } + grid[x][y] = 0; + val++; + countArea(grid, x + 1, y, val); + countArea(grid, x - 1, y, val); + countArea(grid, x, y + 1, val); + countArea(grid, x, y - 1, val); + } + + int maxAreaOfIsland(vector>& grid) { + m = grid.size(); + n = grid[0].size(); + int maxArea = 0; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (grid[i][j] == 1) { + int val = 0; + countArea(grid, i, j, val); + maxArea = max(maxArea, val); + } + } + } + return maxArea; + } +}; diff --git a/695-max-area-of-island/step3.cpp b/695-max-area-of-island/step3.cpp new file mode 100644 index 0000000..265ea30 --- /dev/null +++ b/695-max-area-of-island/step3.cpp @@ -0,0 +1,32 @@ +class Solution { +public: + int m, n; + + void countArea(vector>& grid, int x, int y, int& val) { + if (x < 0 || x >= m || y < 0 || y >= n || grid[x][y] == 0) { + return; + } + grid[x][y] = 0; + val++; + countArea(grid, x + 1, y, val); + countArea(grid, x - 1, y, val); + countArea(grid, x, y + 1, val); + countArea(grid, x, y - 1, val); + } + + int maxAreaOfIsland(vector>& grid) { + m = grid.size(); + n = grid[0].size(); + int maxArea = 0; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (grid[i][j] == 1) { + int val = 0; + countArea(grid, i, j, val); + maxArea = max(maxArea, val); + } + } + } + return maxArea; + } +};