463岛屿周长

题目

给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。

网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

岛屿中没有"湖"("湖" 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。

示例 1:

css 复制代码
输入: grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
输出: 16
解释: 它的周长是上面图片中的 16 个黄色的边

代码与解析

java 复制代码
class Solution {
    int n,m;
    public int islandPerimeter(int[][] grid) {
        n = grid.length;
        m = grid[0].length;
        for(int i = 0;i < n;i ++) {
            for(int j = 0;j < m;j ++) {
                if(grid[i][j] == 1) {
                    return dfs(grid, i, j);
                }
            }
        }
        return 0;
    }
    public int dfs(int[][] grid, int x,int y) {
        // 从岛屿走向边界
        if(x < 0 || y < 0 || x >= n || y >= m)  return 1;
        // 从岛屿走向水面
        if(grid[x][y] == 0) {
            return 1;
        }
        if(grid[x][y] != 1) {
            return 0;
        }
        grid[x][y] = 2;
        return dfs(grid, x + 1, y) + dfs(grid, x - 1, y) +
            dfs(grid, x, y - 1) + dfs(grid, x, y + 1);
    }
}
相关推荐
IT_陈寒几秒前
Python开发者都在偷偷用的5个高效技巧,你竟然还不知道?
前端·人工智能·后端
kevinzeng2 分钟前
mysql和redis数据一致性的策略
后端
小码哥_常2 分钟前
一文搞懂双Token、SSO与第三方权限打通,附实战代码
后端
SimonKing5 分钟前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
灵境空间9 分钟前
企业微信 AI 机器人 PHP SDK —— 免回调地址,三行代码接入,支持流式回复
后端
陈随易15 分钟前
Vite 8正式发布,内置devtool,Wasm SSR 支持
前端·后端·程序员
CodeSheep23 分钟前
首个OpenClaw龙虾大模型排行榜来了,国产AI霸榜了!
前端·后端·程序员
Moment25 分钟前
想转 AI 全栈?这些 Agent 开发面试题你能答出来吗
前端·后端·面试
parafeeee9 小时前
程序人生-Hello’s P2P
数据库·后端·asp.net
bug攻城狮10 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端