一. 題目
題目示例
二. 方法一
解題思路
分析可知:周長的長度 = 每個元素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 ...