岛屿的周长
class Solution {
static int[] x = {0, 1, 0, -1};
static int[] y = {1, 0, -1, 0};//中心方块位置的进行加减,来定位该方块相邻四周的方块
public int islandPerimeter(int[][] grid) {
int n = grid.length,//数组的行数
m = grid[0].length;//数组的列数
int ans = 0;
for (int i = 0; i < n; ++i) {//从第一行开始循环
for (int j = 0; j < m; ++j) {//从第一列开始循环
if (grid[i][j] == 1) {//定位是陆地的方块
int cnt = 0;
for (int k = 0; k < 4; ++k) {//通过上下左右循环四周
int tx = i + x[k];//行数改变
int ty = j + y[k];//列数改变
if (tx < 0 || tx >= n || ty < 0 || ty >= m || grid[tx][ty] == 0)
/*判断一个方块周围方块的状态,tx<0,ty<0表示该方块的的正上和正左为空,
处于第一行或第一列,tx >= n, ty >= m,
该方块的的正下和正右为空,处于最后一行或最后一列
grid[tx][ty] == 0说明相邻空格为水域,这些情况,边长都要+1。*/
{
cnt += 1;
}
}
ans += cnt;
}
}
}
return ans;
}
}