mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +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