LeetCode - 200. Number of Islands
LeetCodeを解いていたらかっこいい書き方があったので共有します
問題はLeetCode-200. Number of Islandsです
概要としては、gridの0(海),1(土地)で表された島の数はいくつですかという問題です
class Solution: def numIslands(self, grid: List[List[str]]) -> int: if not grid: return 0 h, w = len(grid), len(grid[0]) ans = 0 def dfs(i, j): if 0 <= i < h and 0 <= j < w and grid[i][j] == "1": grid[i][j] = "0" list(map(dfs, (i, i, i+1, i-1), (j+1, j-1, j, j))) return 1 return 0 for i in range(h): for j in range(w): ans += dfs(i, j) return ans
dfs(i, j) dfs(i, j+1) dfs(i+1, j) dfs(i-1, j) とやらなくてはならないところを map関数を使ってうまくやっています。なんかすげえとなりました笑
list()をmapにかけているのは、python3からmap関数を書いただけで、何かの変数に渡さない場合、中身が動かないからです。
このコードから学ばさせていただきました。感謝です。