pass 200 bfs medium
This commit is contained in:
parent
7a8c262cb1
commit
98bf27748a
58
200-240525-pass/main.py
Normal file
58
200-240525-pass/main.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
class Solution:
|
||||||
|
def numIslands(self, grid: List[List[str]]) -> int:
|
||||||
|
searched_cell = set()
|
||||||
|
def va(s):
|
||||||
|
return int(s)
|
||||||
|
# bfs
|
||||||
|
ans = 0
|
||||||
|
row = len(grid)
|
||||||
|
column = len(grid[0])
|
||||||
|
def add_node(que, idx, node):
|
||||||
|
if len(que) <= idx:
|
||||||
|
que.append(node)
|
||||||
|
else:
|
||||||
|
que[idx] = node
|
||||||
|
def is_valid_node(node):
|
||||||
|
i = node[0]
|
||||||
|
j = node[1]
|
||||||
|
return i >= 0 and j >= 0 and i < row and j <column
|
||||||
|
flag = []
|
||||||
|
for i, l in enumerate(grid):
|
||||||
|
flag.append([])
|
||||||
|
for j, lee in enumerate(l):
|
||||||
|
flag[i].append(0)
|
||||||
|
for i, l in enumerate(grid):
|
||||||
|
for j, ele in enumerate(l):
|
||||||
|
val = va(grid[i][j])
|
||||||
|
if val == 0 : continue
|
||||||
|
# if (i,j) in searched_cell: continue
|
||||||
|
if flag[i][j] == 1: continue
|
||||||
|
que = [(i, j)]
|
||||||
|
idx = 0
|
||||||
|
while idx >= 0:
|
||||||
|
node = que[idx]
|
||||||
|
# if node in searched_cell: continue
|
||||||
|
idx -= 1
|
||||||
|
if flag[node[0]][node[1]] == 1: continue
|
||||||
|
flag[node[0]][node[1]] = 1
|
||||||
|
if va(grid[node[0]][node[1]]) == 0: continue
|
||||||
|
up = (node[0] - 1, node[1])
|
||||||
|
down = (node[0] + 1, node[1])
|
||||||
|
left = (node[0], node[1] - 1)
|
||||||
|
right = (node[0], node[1] + 1)
|
||||||
|
if is_valid_node(up):
|
||||||
|
idx += 1
|
||||||
|
add_node(que, idx, up)
|
||||||
|
if is_valid_node(down):
|
||||||
|
idx += 1
|
||||||
|
add_node(que,idx, down)
|
||||||
|
if is_valid_node(left):
|
||||||
|
idx += 1
|
||||||
|
add_node(que, idx, left)
|
||||||
|
if is_valid_node(right):
|
||||||
|
idx += 1
|
||||||
|
add_node(que,idx, right)
|
||||||
|
ans += 1
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user