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関数を書いただけで、何かの変数に渡さない場合、中身が動かないからです。

このコードから学ばさせていただきました。感謝です。