题目倒是很简单,思路也很简单,我的第一反应就是dfs。最近看了不少dfs的题目和解答,但是实操却不行,没想到这个倒是让我成功了。
我刚刚开始刷题,这是array里面简单程度排名前五的题。。。
上代码:
class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int ans = 0, tmp = 0;
for(int i = 0; i < grid.size(); i++)
for(int j = 0; j < grid[0].size(); j++){
if(grid[i][j] == 1)
tmp = dfs(grid, i, j);
if(tmp > ans)
ans =tmp;
}
return ans;
}
int dfs(vector<vector<int>>& grid, int i, int j){
if( i >= 0 && i < grid.size() && j >= 0 && j < grid[0].size() && grid[i][j] == 1){
grid[i][j] = 0;
return 1 + dfs(grid, i+1, j) + dfs(grid, i-1, j) + dfs(grid, i, j-1) + dfs(grid, i, j+1);
}
return 0;
}
};
代码写的不够漂亮,但是目前水平大概就只有这样了。
第一次写博客感觉还不错!
望共勉,同进步!