【leetcode前500】463. 岛屿的周长

很容易我们能观察出,一个块能带来4条边,但是一旦有邻接就会损失2条。

我们需要计算的是

1.一共多少个块,这个很容易,遍历即可

2.判断它的每条边是否是邻接的

一旦邻接,就把总数减一,因为遍历到他的邻接块还会计算一次。

class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:
        def check(i,j):
            if 0<=i<len(grid) and 0<=j<len(grid[0]) and grid[i][j]==1:
                return True
            return False
        if not grid:
            return 0
        m,n=len(grid),len(grid[0])
        block=edge=0
        for i in range(m):
            for j in range(n):
                if grid[i][j]==1:
                    block+=4
                    for ni,nj in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:
                        if check(ni,nj):
                            edge+=1
        return block-edge

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值