mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
Merge pull request #239 from fusunx/master
0051N皇后.md Javascript;0037解数独.md Javascript
This commit is contained in:
@ -291,7 +291,61 @@ Python:
|
||||
|
||||
Go:
|
||||
|
||||
Javascript:
|
||||
```Javascript
|
||||
var solveSudoku = function(board) {
|
||||
function isValid(row, col, val, board) {
|
||||
let len = board.length
|
||||
// 行不能重复
|
||||
for(let i = 0; i < len; i++) {
|
||||
if(board[row][i] === val) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
// 列不能重复
|
||||
for(let i = 0; i < len; i++) {
|
||||
if(board[i][col] === val) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
let startRow = Math.floor(row / 3) * 3
|
||||
let startCol = Math.floor(col / 3) * 3
|
||||
|
||||
for(let i = startRow; i < startRow + 3; i++) {
|
||||
for(let j = startCol; j < startCol + 3; j++) {
|
||||
if(board[i][j] === val) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
function backTracking() {
|
||||
for(let i = 0; i < board.length; i++) {
|
||||
for(let j = 0; j < board[0].length; j++) {
|
||||
if(board[i][j] !== '.') continue
|
||||
for(let val = 1; val <= 9; val++) {
|
||||
if(isValid(i, j, `${val}`, board)) {
|
||||
board[i][j] = `${val}`
|
||||
if (backTracking()) {
|
||||
return true
|
||||
}
|
||||
|
||||
board[i][j] = `.`
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
backTracking(board)
|
||||
return board
|
||||
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
-----------------------
|
||||
|
@ -430,6 +430,65 @@ func solveNQueens(n int) [][]string {
|
||||
}
|
||||
```
|
||||
|
||||
Javascript:
|
||||
```Javascript
|
||||
var solveNQueens = function(n) {
|
||||
function isValid(row, col, chessBoard, n) {
|
||||
|
||||
for(let i = 0; i < row; i++) {
|
||||
if(chessBoard[i][col] === 'Q') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
for(let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
|
||||
if(chessBoard[i][j] === 'Q') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
for(let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {
|
||||
if(chessBoard[i][j] === 'Q') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
function transformChessBoard(chessBoard) {
|
||||
let chessBoardBack = []
|
||||
chessBoard.forEach(row => {
|
||||
let rowStr = ''
|
||||
row.forEach(value => {
|
||||
rowStr += value
|
||||
})
|
||||
chessBoardBack.push(rowStr)
|
||||
})
|
||||
|
||||
return chessBoardBack
|
||||
}
|
||||
|
||||
let result = []
|
||||
function backtracing(row,chessBoard) {
|
||||
if(row === n) {
|
||||
result.push(transformChessBoard(chessBoard))
|
||||
return
|
||||
}
|
||||
for(let col = 0; col < n; col++) {
|
||||
if(isValid(row, col, chessBoard, n)) {
|
||||
chessBoard[row][col] = 'Q'
|
||||
backtracing(row + 1,chessBoard)
|
||||
chessBoard[row][col] = '.'
|
||||
}
|
||||
}
|
||||
}
|
||||
let chessBoard = new Array(n).fill([]).map(() => new Array(n).fill('.'))
|
||||
backtracing(0,chessBoard)
|
||||
return result
|
||||
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
|
Reference in New Issue
Block a user