From 15e014273be10b012a93cd7c3c4d77e6d0999f80 Mon Sep 17 00:00:00 2001 From: Tetsuya Hasegawa Date: Sun, 19 May 2024 09:41:17 +0900 Subject: [PATCH] Create 0052-n-queens-ii.java --- java/0052-n-queens-ii.java | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 java/0052-n-queens-ii.java diff --git a/java/0052-n-queens-ii.java b/java/0052-n-queens-ii.java new file mode 100644 index 000000000..35bf70f50 --- /dev/null +++ b/java/0052-n-queens-ii.java @@ -0,0 +1,38 @@ +class Solution { + int count = 0; + + public int totalNQueens(int n) { + Set colSet = new HashSet<>(); + Set posDiagSet = new HashSet<>(); // (r + c) + Set negDiagSet = new HashSet<>(); // (r - c) + backtrack(0, n, colSet, posDiagSet, negDiagSet); + return count; + } + + private void backtrack( + int row, + int n, + Set colSet, + Set posDiagSet, + Set negDiagSet) { + if (row == n) { + count += 1; + return; + } + + for (int col = 0; col < n; col++) { + if (colSet.contains(col) + || posDiagSet.contains(row + col) + || negDiagSet.contains(row - col)) { + continue; + } + colSet.add(col); + posDiagSet.add(row + col); + negDiagSet.add(row - col); + backtrack(row + 1, n, colSet, posDiagSet, negDiagSet); + colSet.remove(col); + posDiagSet.remove(row + col); + negDiagSet.remove(row - col); + } + } +}