From e32682b0a81fefc4290d9f5a3c96fdf7a1b2b59a Mon Sep 17 00:00:00 2001 From: aadil42 <77232799+aadil42@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:58:23 +0530 Subject: [PATCH] Create N-Queens-ii.js Added solution for N-queens-ii. --- .../Hamilton Path/N-Queens-ii.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 02. Algorithms/07. Backtracking/Hamilton Path/N-Queens-ii.js diff --git a/02. Algorithms/07. Backtracking/Hamilton Path/N-Queens-ii.js b/02. Algorithms/07. Backtracking/Hamilton Path/N-Queens-ii.js new file mode 100644 index 00000000..16f356ed --- /dev/null +++ b/02. Algorithms/07. Backtracking/Hamilton Path/N-Queens-ii.js @@ -0,0 +1,44 @@ +/** + * @param {number} n + * @return {number} + */ +var totalNQueens = function(n) { + let result = 0; + const board = []; + for(let i = 0; i < n; i++) { + const temp = []; + for(let j = 0; j < n; j++) { + temp[j] = '.'; + } + board.push(temp); + } + const colHash = new Set(); + const posDiagonal = new Set(); + const negDiagonal = new Set(); + + function backtrack(r) { + if(r === n) { + result++; + return; + } + + for(let c = 0; c < n; c++) { + if(colHash.has(c) || posDiagonal.has(r+c) || negDiagonal.has(r-c)) continue; + + colHash.add(c); + posDiagonal.add(r+c); + negDiagonal.add(r-c); + board[r][c] = 'Q'; + + backtrack(r+1); + + colHash.delete(c); + posDiagonal.delete(r+c); + negDiagonal.delete(r-c); + board[r][c] = '.'; + } + } + + backtrack(0); + return result; +};