LeetCode0463 島嶼的周長

2021-10-09 01:14:23 字數 1956 閱讀 9507

一. 題目

題目示例

二. 方法一

解題思路

分析可知:周長的長度 = 每個元素1四周不是1(0 或邊界)的個數之和 = 4 * 元素1的個數 - 周圍是1的個數

此方法使用的是:周長的長度 = 4 * 元素1的個數 - 周圍是1的個數

解題**

def

islandperimeter

(self, grid: list[list[

int]])

->

int:

row =

len(grid)

col =

len(grid[0]

) count =

0 size =

0for r in

range

(row)

:for c in

range

(col)

:if grid[r]

[c]==1:

size +=

1if r >=

1and grid[r -1]

[c]==1:

count +=

1if c >=

1and grid[r]

[c -1]

==1: count +=

1if c < col -

1and grid[r]

[c +1]

==1: count +=

1if r < row -

1and grid[r +1]

[c]==1:

count +=

1 result =

4* size - count

return result

分析時間複雜度: o(m * n)

空間複雜度: o(1)

三. 方法二

解題思路

分析可知:周長的長度 = 每個元素1四周不是1(0 或邊界)的個數之和 = 4 * 元素1的個數 - 周圍是1的個數

此方法使用的是:周長的長度 = 每個元素1四周不是1(0 或邊界)的個數之和

解題**

def

islandperimeter

(self, grid: list[list[

int]])

->

int:

row =

len(grid)

col =

len(grid[0]

) count =

0for r in

range

(row)

:for c in

range

(col)

:if grid[r]

[c]==1:

if r <

1or grid[r -1]

[c]==0:

count +=

1if c <

1or grid[r]

[c -1]

==0: count +=

1if c >= col -

1or grid[r]

[c +1]

==0: count +=

1if r >= row -

1or grid[r +1]

[c]==0:

count +=

1return count

分析時間複雜度: o(m * n)

空間複雜度: o(1)

leetcode 島嶼的個數

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直 方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 00100 ...

leetcode島嶼的個數

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11000 00100 00...

200 島嶼數量 leetcode

思路 深度遍歷 1.第一層main函式裡 兩層迴圈找 grid x y 1 的點 res 1 2.遞迴函式裡,把與該點四個方向相鄰的,值為 1 的點全部標0 標0方法 對座標 x,y 四個方向中 值 1 的賦0 再遞迴。注意 1.對於二維陣列,判空要用 if len grid 0 return 0 ...