8000 * Done with "52. N-Queens II". · garciparedes/leetcode@fb820a3 · GitHub
[go: up one dir, main page]

Skip to content

Commit fb820a3

Browse files
committed
* Done with "52. N-Queens II".
1 parent e67fb9f commit fb820a3

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

problems/0052_n_queens_ii.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution:
2+
def totalNQueens(self, n: int) -> int:
3+
board = [[False for _ in range(n)] for _ in range(n)]
4+
5+
ans = self._traverse(board, 0)
6+
return ans
7+
8+
def _traverse(self, board: list[list[bool]], i: int) -> int:
9+
if i >= len(board):
10+
return 1
11+
12+
ans = 0
13+
for j in range(len(board[0])):
14+
if not self._is_valid(board, i, j):
15+
continue
16+
17+
board[i][j] = True
18+
ans += self._traverse(board, i + 1)
19+
board[i][j] = False
20+
21+
return ans
22+
23+
24+
@staticmethod
25+
def _is_valid(board: list[list[bool]], i: int, j: int) -> bool:
26+
for k in range(0, i):
27+
if board[k][j]:
28+
return False
29+
30+
for k in range(len(board[0])):
31+
if board[i][k]:
32+
return False
33+
34+
for k in range(min(i, j)):
35+
if board[i - (k + 1)][j - (k + 1)]:
36+
return False
37+
38+
for k in range(min(i, ((len(board[0]) - 1) - j))):
39+
if board[i - (k + 1)][j + (k + 1)]:
40+
return False
41+
42+
return True

0 commit comments

Comments
 (0)
0