mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Merge pull request #1201 from xiaofei-2020/back20
添加(0051.N皇后.md):增加typescript版本
This commit is contained in:
@ -457,6 +457,58 @@ var solveNQueens = function(n) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## TypeScript
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function solveNQueens(n: number): string[][] {
|
||||||
|
const board: string[][] = new Array(n).fill(0).map(_ => new Array(n).fill('.'));
|
||||||
|
const resArr: string[][] = [];
|
||||||
|
backTracking(n, 0, board);
|
||||||
|
return resArr;
|
||||||
|
function backTracking(n: number, rowNum: number, board: string[][]): void {
|
||||||
|
if (rowNum === n) {
|
||||||
|
resArr.push(transformBoard(board));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < n; i++) {
|
||||||
|
if (isValid(i, rowNum, board) === true) {
|
||||||
|
board[rowNum][i] = 'Q';
|
||||||
|
backTracking(n, rowNum + 1, board);
|
||||||
|
board[rowNum][i] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function isValid(col: number, row: number, board: string[][]): boolean {
|
||||||
|
const n: number = board.length;
|
||||||
|
if (col < 0 || col >= n || row < 0 || row >= n) return false;
|
||||||
|
// 检查列
|
||||||
|
for (let row of board) {
|
||||||
|
if (row[col] === 'Q') return false;
|
||||||
|
}
|
||||||
|
// 检查45度方向
|
||||||
|
let x: number = col,
|
||||||
|
y: number = row;
|
||||||
|
while (y >= 0 && x < n) {
|
||||||
|
if (board[y--][x++] === 'Q') return false;
|
||||||
|
}
|
||||||
|
// 检查135度方向
|
||||||
|
x = col;
|
||||||
|
y = row;
|
||||||
|
while (x >= 0 && y >= 0) {
|
||||||
|
if (board[y--][x--] === 'Q') return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function transformBoard(board: string[][]): string[] {
|
||||||
|
const resArr = [];
|
||||||
|
for (let row of board) {
|
||||||
|
resArr.push(row.join(''));
|
||||||
|
}
|
||||||
|
return resArr;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Swift
|
### Swift
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
|
Reference in New Issue
Block a user