当前位置:网站首页>leetcode463. 岛屿的周长(简单)

leetcode463. 岛屿的周长(简单)

2022-06-11 16:01:00 重you小垃

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
法一:遍历每个方格,判断四周的位置,如果是边界外或者是水域则ans++
法二优化:由于只有一个岛屿,所以可以优化到只遍历它周围的格子

class Solution {
    
public:
    int flag[105][105];
    int xy[4][2] = {
    0, 1, 0, -1, 1, 0, -1, 0};
    int dfs(vector<vector<int>>& grid, int x, int y) {
    
        
        if (!grid[x][y]) return 1;
        int n = grid.size(), m = grid[0].size(), ans = 0;
        flag[x][y] = 1;
        for (int i = 0; i < 4; ++i) {
    
            int xx = x + xy[i][0];
            int yy = y + xy[i][1];
            if (xx < 0 || xx >= n || yy < 0 || yy >= m) {
    
                ans++;
                continue;
            }
            if (!flag[xx][yy]) ans += dfs(grid, xx, yy);
        } 
        return ans;
    }
    int islandPerimeter(vector<vector<int>>& grid) {
    
   
        int n = grid.size(), m = grid[0].size(), ans = 0;
        for (int i = 0; i < n; ++i) {
    
            for (int j = 0; j < m; ++j) {
    
                if (grid[i][j]) {
    
                    ans = dfs(grid, i, j);
                    return ans;
                }
            }
        }
        return ans;
    }
};
原网站

版权声明
本文为[重you小垃]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zhangjiaji111/article/details/125232674