岛屿的周长
一、题目描述
给定一个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