题目:求岛屿周长;给定一个二维数组,数组中元素值为1的表示是land,值为0则表示海水;各个值为1的land可以连成一个岛屿
思路:岛屿的周长等于各个值为1的方格外缘长度相加(如果一个land有m个相邻的land,该方格的外缘长久要减m)
如上图的例子中从左到右,从上到下计算:3+3+0+3+2+2+3 = 16
因此,我们只需要遍历这个二维数组,找到值为1的方格就继续看该方格周围值是否也是1难度:Easy
代码:
public class Solution {
public int islandPerimeter(int[][] grid) {
int len1 = grid.length;
int len2 = grid[0].length;
int perimeter = 0;
int sum = 0;
for(int i = 0; i < len1; i++){
for(int j = 0; j < len2; j++){
//找到land,继续查看周围是否有land
if(grid[i][j] == 1){
sum = 4;
if(i+1 < len1){
sum = sum - grid[i+1][j];
}
if(i-1 >= 0){
sum = sum - grid[i-1][j];
}
if(j+1 < len2){
sum = sum - grid[i][j+1];
}
if(j-1 >= 0){
sum = sum - grid[i][j-1];
}
System.out.print(sum);
perimeter += sum;
}
}
}
return perimeter;
}
}