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]) } }};