LeetCode#463. Island Perimeter

  • 题目:求岛屿周长;给定一个二维数组,数组中元素值为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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值