leetcode python3演算法 島嶼個數

2021-09-11 17:02:27 字數 2589 閱讀 4377

1.題目描述

給定乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。

示例 1:

輸入:11110

11010

11000

00000

輸出: 1

示例 2:

輸入:11000

11000

00100

00011

輸出: 3

2.思路

深度優先遍歷,遍歷矩陣中的每乙個元素,如果為1則計數加1,同時把自己以及周圍(上下左右)的元素都置0,利用遞迴實現。

3.**

class

solution

(object):

defnumislands

(self, grid)

:"""

:type grid: list[list[str]]

:rtype: int

"""ifnot grid:

return

none

m =len(grid)

n =len(grid[0]

) res =

0for i in

range

(m):

for j in

range

(n):

if grid[i]

[j]:

res +=

1 self.intozero(grid,i,j)

return res

defintozero

(self, grid,i,j)

:if i <

0or j <

0or i >=

len(grid)

or j >=

len(grid[0]

):return

if grid[i]

[j]:

grid[i]

[j]=

0 self.intozero(grid, i +

1, j)

self.intozero(grid, i -

1, j)

self.intozero(grid, i, j -1)

self.intozero(grid, i, j +

1)

class

solution

(object):

defnumislands

(self, grid)

:"""

:type grid: list[list[str]]

:rtype: int

"""ifnot grid:

return

none

m =len(grid)

if m ==0:

return

0 n =

len(grid[0]

)if n ==0:

return

0 res =

0for i in

range

(m):

for j in

range

(n):

if grid[i]

[j]==

'1':

res +=

1 self.intozero(grid,i,j)

return res

defintozero

(self, grid, i, j)

: grid[i]

[j]=

'0'# 判斷上方字元

if i >

0and grid[i -1]

[j]==

'1':

self.intozero(grid, i -

1, j)

# 判斷左方字元

if j >

0and grid[i]

[j -1]

=='1'

: self.intozero(grid, i, j -1)

# 判斷下方字元

if i <

len(grid)-1

and grid[i +1]

[j]==

'1':

self.intozero(grid, i +

1, j)

# 判斷右方字元

if j <

len(grid[0]

)-1and grid[i]

[j +1]

=='1'

: self.intozero(grid, i, j +

1)

如果覺得對你有幫助的話,右上角,讚一波。謝謝支援!

leetcode python3 整數轉羅馬數字

1.思路 將數字分解成千位數 百位數 個位數,對不同的位數中分3個階段進行討論 9的 5 8之間的 4的 1 3之間的。對於不同的分位數和階段加上不同的符號處理 2.class solution def inttoroman self,num str if int num 1000 0 for i ...

單排leetcode python3 兩數相加

給定兩個非空鍊錶來代表兩個非負數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807class listnode def init...

Leetcode Python3 實現三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solu...