uacs2024

导航

leeetcode463. 岛屿的周长

463. 岛屿的周长

挺简单的。不用dfs的解法

class Solution {
public:
    int isPerimeter(vector<vector<int>>& grid,int i,int j){
        if(i == -1 || i == grid.size() || j == -1 || j == grid[0].size())  return 1;
        if(grid[i][j] == 0)  return 1;
        return 0;
    }
    int islandPerimeter(vector<vector<int>>& grid) {
        int res = 0;
        for(int i = 0;i < grid.size();++i){
            for(int j = 0;j < grid[0].size();++j){
                if(grid[i][j] == 1)
                res = res + isPerimeter(grid,i-1,j) + isPerimeter(grid,i+1,j) + isPerimeter(grid,i,j-1) + isPerimeter(grid,i,j+1);
            }
        }
        return res;
    }
};

使用dfs解法

class Solution {
public:
    int dfs(vector<vector<int>>& grid,int i,int j){
        if(i == -1 || i == grid.size() || j == -1 || j == grid[0].size())  return 1;
        if(grid[i][j] == 0)  return 1;
        if(grid[i][j] != 1)  return 0;
        grid[i][j] = 2;
        return dfs(grid,i-1,j) + dfs(grid,i+1,j) + dfs(grid,i,j-1) + dfs(grid,i,j+1);
    }
    int islandPerimeter(vector<vector<int>>& grid) {
        for(int i = 0;i < grid.size();++i){
            for(int j = 0;j < grid[0].size();++j){
                if(grid[i][j] == 1)  // 题目限制只有一个岛屿,计算一个即可
                return dfs(grid,i,j);
            }
        }
        return 0;
    }
};

 

posted on 2025-03-26 12:21  ᶜʸᵃⁿ  阅读(3)  评论(0)    收藏  举报