题目链接
题目描述
解题思路
方法一:DFS
解决问题的核心在于:每次遍历完后,将遍历到的1全部改成0,这样就可以防止重复遍历了;
实现代码如下:
class Solution {public int maxAreaOfIsland(int[][] grid) {int ans = 0;for (int i = 0; i != grid.length; ++i) {for (int j = 0; j != grid[0].length; ++j) {ans = Math.max(ans, dfs(grid, i, j));}}return ans;}public int dfs(int[][] grid, int cur_i, int cur_j) {if (cur_i < 0 || cur_j < 0 || cur_i == grid.length || cur_j == grid[0].length || grid[cur_i][cur_j] != 1) {return 0;}grid[cur_i][cur_j] = 0;int[] di = {0, 0, 1, -1};int[] dj = {1, -1, 0, 0};int ans = 1;for (int index = 0; index != 4; ++index) {int next_i = cur_i + di[index], next_j = cur_j + dj[index];ans += dfs(grid, next_i, next_j);}return ans;}}
