LeetCode#463. Island Perimeter

  • 题目:求岛屿周长;给定一个二维数组,数组中元素值为1的表示是land,值为0则表示海水;各个值为1的land可以连成一个岛屿
    LeetCode#463. Island Perimeter_第1张图片

  • 思路:岛屿的周长等于各个值为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;
    }
}

你可能感兴趣的:(LeetCode)