694. Number of Distinct Islands (Medium) - TengnanYao/daily_leetcode GitHub Wiki

/**
 * @param {number[][]} grid
 * @return {number}
 */
var numDistinctIslands = function(grid) {
    const print = s => {
        console.log(s)
    }
    const result = new Set()
    const seen = new Set()
    const dfs = (i, j, s, level) => {
        seen.add(i + "," + j)
        for (const [dx, dy] of [[1, 0], [0, 1], [-1, 0], [0, -1]]) {
            const [x, y] = [i + dx, j + dy]
            if (x >= 0 && x < m && y >= 0 && y < n) {
                if (!(seen.has(x + "," + y)) && grid[x][y] === 1) {
                    s += dfs(x, y, "" + level + dx + dy, level + 1)
                }
            }
        }
        return s
    }
    const [m, n] = [grid.length, grid[0].length]
    for (let i = 0; i < m; i++) {
        for (let j = 0; j < n; j++) {
            if (!(seen.has(i + "," + j)) && grid[i][j] === 1) {
                result.add(dfs(i, j, "", 0))
            }
        }
    }
    // print(Array.from(result))
    return result.size
};
⚠️ **GitHub.com Fallback** ⚠️