s4553711
12/8/2017 - 3:06 PM

695.cpp

class Solution {
public:
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int area = 0;
        for(int i = 0; i < grid.size(); i++) {
            for(int j = 0; j < grid[i].size(); j++) {
                if (grid[i][j] != 0) {
                   area = max(area, areaOfIsland(grid, i, j)); 
                }
            }
        }
        return area;
    }
    
    int areaOfIsland(vector<vector<int>>& grid, int i, int j) {
        if (i >= 0 && i < grid.size() && j >= 0 && j < grid[i].size() && grid[i][j] != 0) {
            grid[i][j] = 0;
            return 1 + areaOfIsland(grid, i+1, j) + areaOfIsland(grid, i-1, j) +
                areaOfIsland(grid, i, j+1) + areaOfIsland(grid, i, j-1);
        }
        return 0;
    }
};