首页 > 其他分享 >岛屿的周长

岛屿的周长

时间:2022-12-09 16:44:45浏览次数:42  
标签:周长 int 岛屿 网格 解题 grid

岛屿的周长

一、题目描述

给定一个row * col 的二维网格grid,其中:grid[i][j]=1 时不表示陆地,grid[i][j]=0表示水域。
网格中的格子水平方向相连,整个网格被水完全包围,但其中卡高有一个岛屿。岛屿中是没有湖的存在。计算出这个岛屿的周长。
示例1

输入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
输出:16

示例2

输入:grid = [[1]]
输出:4

二、解题思路

这里的解题思路就是遍历其所有网格,找出为1的。然后再去探索周围是否为水域。也就是0。

三、解题方法

方法1:(循环遍历)
发现。如图一个岛再不相连的情况下,有4跳边,没连接一个岛,就会少一条边。只需判断每条边的相邻位置是1还是0;即可。
代码实现:

class Solution {
    public int islandPerimeter(int[][] grid) {

        int res = 0;
        for(int i=0;i<grid.length;i++){
            for(int j=0; j<grid[i].length;j++){
                if(grid[i][j] == 1){
                    if(i==0 || grid[i-1][j]==0){
                        res++;
                    }
                    if(i==grid.length-1 || grid[i+1][j] ==0){
                        res++;
                    }
                    if(j==0 || grid[i][j-1] ==0){
                        res++;
                    }
                    if(j==grid[i].length-1 || grid[i][j+1]==0){
                        res++;
                    }
                }
            }
            
        }
        return res;
    }
}   

标签:周长,int,岛屿,网格,解题,grid
From: https://www.cnblogs.com/zjjtt/p/16969333.html

相关文章