LCR 105. 岛屿的最大面积

https://leetcode.cn/problems/ZL6zAn/

class Solution {
public:
    void DFS(vector<vector<int>>& grid, int i, int j, int M, int N, int& sum) {
        if (grid[i][j] == 0 || grid[i][j] == 2) return; 

        if (grid[i][j] == 1) {
            sum +=1;

        } 

        // 防止重复
        grid[i][j] = 2;

        // 上 下 左 右
        if(i >= 1) DFS(grid, i-1, j, M, N, sum);
        if(i <= M-2) DFS(grid, i+1, j, M, N, sum);
        if(j >= 1) DFS(grid, i, j-1, M, N, sum);
        if(j <= N-2) DFS(grid, i, j+1, M, N, sum);


    }

    int maxAreaOfIsland(vector<vector<int>>& grid) {
        if (grid.empty()) return 0; 
    
        int M = grid.size();
        int N = grid[0].size();

        int max_sum = 0;
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < N; j++) {
                int sum = 0;
                DFS(grid, i, j, M, N, sum );

                if (sum > max_sum) {
                    max_sum = sum;
                }
            }

        }
            
        return max_sum;

    }
};

 

posted on 2025-03-12 11:18  TMatrix52  阅读(11)  评论(0)    收藏  举报

导航