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:
|
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