diff --git a/200-240525-pass/main.py b/200-240525-pass/main.py new file mode 100644 index 0000000..3c9e6b9 --- /dev/null +++ b/200-240525-pass/main.py @@ -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 = 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 + +