島嶼的周長

2021-10-09 07:13:55 字數 2602 閱讀 3919

島嶼的周長1

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

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

島嶼中沒有「湖」(「湖」 指水域在島嶼內部且不和島嶼周圍的水相連)。格仔是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。

示例 :

輸入:[[0,1,0,0],

[1,1,1,0],

[0,1,0,0],

[1,1,0,0]]

輸出: 16

改進:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

"""@author: wowlnan

@github:

@blog:

"""class

solution

:def

islandperimeter

(self, grid)

->

int:

columns=

len(grid[0]

) rows=

len(grid)

length=

0 i=

0 fills=

0 touches=

0while i

j=0while j

if grid[i]

[j]==1:

fills+=

1if j>

0and grid[i]

[j-1]==

1:touches+=

1if i>

0and grid[i-1]

[j]==1:

touches+=

1 j+=

1 i+=

1 length=fills*

4-touch*

2return length

或者:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

"""@author: wowlnan

@github:

@blog:

"""class

solution

:def

islandperimeter

(self, grid)

->

int:

columns=

len(grid[0]

) rows=

len(grid)

length=

0 fills=

0 touches=

0for i in

range

(rows)

:for j in

range

(columns)

:if grid[i]

[j]:

fills+=1if

(j>0)

&grid[i]

[j]&grid[i]

[j-1]:

touches+=1if

(i>0)

&grid[i]

[j]&grid[i-1]

[j]:

touches+=

1 length=fills*

4-touches*

2return length

島嶼的周長

問題描述 給定乙個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。網格中的格仔水平和垂直方向相連 對角線方向不相連 整個網格被水完全包圍,但其中恰好有乙個島嶼 或者說,乙個或多個表示陸地的格仔相連組成的島嶼 島嶼中沒有 湖 湖 指水域在島嶼內部且不和島嶼周圍的水相連 格仔是邊長為...

島嶼的周長

給定乙個 row x col 的二維網格地圖 grid 其中 grid i j 1 表示陸地,grid i j 0 表示水域。網格中的格仔 水平和垂直 方向相連 對角線方向不相連 整個網格被水完全包圍,但其中恰好有乙個島嶼 或者說,乙個或多個表示陸地的格仔相連組成的島嶼 島嶼中沒有 湖 湖 指水域在...

島嶼周長(C )

描述 用乙個n m的二維陣列表示地圖,1表示陸地,0代表海水,每一格都表示乙個1 1的區域。地圖中的格仔只能橫向或者縱向連線 不能對角連線 連線在一起的陸地稱作島嶼,同時整個地圖都被海水圍繞。假設給出的地圖中只會有乙個島嶼,並且島嶼中不會有湖 即不會有水被陸地包圍的情況出現 請判斷所給定的二維地圖中...