Skip to content

Code:

js
/**
 * @param {number} n
 * @return {string[][]}
 */
var solveNQueens = function(n) {
    const string = Array(n).fill('.').map(() => Array(n).fill('.'))
    const array = []

    const dfs = (i = 0, column = new Set(), left = new Set(), right = new Set()) => {
        if (n === i) {
            return array.push(string.map(s => s.join('')))
        }


        for (let j = 0; j < n; j++) {
            if (column.has(j)) {
                continue
            }

            const l = i + j
            const r = i - j

            if (left.has(l) || right.has(r)) {
                continue
            }
            
            string[i][j] = 'Q'
            column.add(j)
            left.add(l)
            right.add(r)

            dfs(i + 1, column, left, right)

            string[i][j] = '.'
            column.delete(j)
            left.delete(l)
            right.delete(r)
        }



        return array.length
    }

    return dfs()
};


console.time('2')
console.log(solveNQueens(15))
console.timeEnd('2')

❤ With Algorithm