mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
新增52. N皇后 II JavaScript版本
This commit is contained in:
@ -101,4 +101,48 @@ public:
|
|||||||
```
|
```
|
||||||
|
|
||||||
# 其他语言补充
|
# 其他语言补充
|
||||||
|
JavaScript
|
||||||
|
```javascript
|
||||||
|
var totalNQueens = function(n) {
|
||||||
|
let count = 0;
|
||||||
|
const backtracking = (n, row, chessboard) => {
|
||||||
|
if(row === n){
|
||||||
|
count++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(let col = 0; col < n; col++){
|
||||||
|
if(isValid(row, col, chessboard, n)) { // 验证合法就可以放
|
||||||
|
chessboard[row][col] = 'Q'; // 放置皇后
|
||||||
|
backtracking(n, row + 1, chessboard);
|
||||||
|
chessboard[row][col] = '.'; // 回溯
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const isValid = (row, col, chessboard, n) => {
|
||||||
|
// 检查列
|
||||||
|
for(let i = 0; i < row; i++){ // 这是一个剪枝
|
||||||
|
if(chessboard[i][col] === 'Q'){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 检查 45度角是否有皇后
|
||||||
|
for(let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--){
|
||||||
|
if(chessboard[i][j] === 'Q'){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 检查 135度角是否有皇后
|
||||||
|
for(let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++){
|
||||||
|
if(chessboard[i][j] === 'Q'){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const chessboard = new Array(n).fill([]).map(() => new Array(n).fill('.'));
|
||||||
|
backtracking(n, 0, chessboard);
|
||||||
|
return count;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user