菜鳥扣程式碼第九天:leetcode463--島嶼的周長

weixin_51239526發表於2020-10-30

題目描述:

給定一個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。

網格中的格子水平和垂直方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有一個島嶼(或者說,一個或多個表示陸地的格子相連組成的島嶼)。

島嶼中沒有“湖”(“湖” 指水域在島嶼內部且不和島嶼周圍的水相連)。格子是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。
輸入:
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]

輸出: 16

在這裡插入圖片描述

解釋: 它的周長是下面圖片中的 16 個黃色的邊:

程式碼:

class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
if not grid:
return 0

    result = 0
    for i in range(len(grid)):
        for j in range(len(grid[0])):
            if grid[i][j] == 1:
                result += 4
                if i > 0 and grid[i-1][j] == 1:
                    result -= 2
                if j > 0 and grid[i][j-1] == 1:
                    result -= 2
    
    return result 

測試用例:

輸入
[[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
輸出
16
預期結果
16

相關文章