A leetcode DFS problem.

Problem

https://neetcode.io/solutions/max-area-of-island

Soln

int islandSize(vector<vector<int>>& grid, int x, int y){
    std::cout << x << " " << y << '\n';
    if (grid[y][x] == 0) return 0;
    grid[y][x] = 0;
    int retsum = 0;
    if (y +1< grid.size()){
        std::cout << "checking down\n";
        retsum += islandSize(grid, x, y+1);
    }
    if (y-1>= 0){
        std::cout << "checking up\n";
        retsum += islandSize(grid, x, y-1);
    }
    if (x-1>= 0){
        std::cout << "checking left\n";
        retsum += islandSize(grid, x-1, y);
    }
    if (x+1< grid[0].size()){
        std::cout << "checking right\n";
        retsum += islandSize(grid, x+1, y);
    }
    return 1 + retsum;
}
 
int maxAreaOfIsland(vector<vector<int>>& grid) {
    int maxarea = 0;
    for (int i = 0; i < grid.size(); i++){
        for (int v = 0; v < grid[i].size(); v++){
            if (grid[i][v] == 1){
              int temparea = islandSize(grid, v, i);
              if (maxarea < temparea) maxarea = temparea;
            }
        }
    }
    return maxarea;
}