var solveNQueens = function(n) {
let list = [],
temp = []
backtrack(0, temp)
return list
// r === row || c == col || r - c === row -col || r + c === row + col
function backtrack(row, temp) {
if(row === n) {
list.push(
temp.map((c) => {
let arr = new Array(n).fill('.')
arr[c] = 'Q'
return arr.join('')
})
)
}
for(let col = 0; col < n; col++) {
let canNotSet = temp.some((c, r) => {
return c === col || (r-c) === (row - col) || (r + c) === (row + col)
})
if(canNotSet) continue
backtrack(row + 1, [...temp, col])
}
}
};