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);
    }
}
相关推荐
梦兮林夕10 分钟前
从零掌握 Gin 参数解析与验证
后端·go·gin
bobz96520 分钟前
IPSec IKE PSK 与扩展支持Xauth账户密码
后端
supermodule20 分钟前
基于flask的一个数据展示网页
后端·python·flask
315356691329 分钟前
manus邀请码申请手把手教程
前端·后端·面试
青石路42 分钟前
经由同个文件多次压缩的文件MD5都不一样问题排查,感慨AI的强大!
java·后端
RainbowSea1 小时前
5. MySQL 存储引擎(详解说明)
数据库·后端·mysql
RainbowSea1 小时前
130道基础OJ编程题之: 68\~77
java·后端
庄园特聘拆椅狂魔3 小时前
SpringBoot项目中注解使用规范
java·spring boot·后端
架构文摘JGWZ3 小时前
Spring40种注解(下)!!
后端·学习·spring
一小路一7 小时前
通往 AI 之路:Python 机器学习入门-机器学习基本概念
人工智能·后端·python·学习·机器学习