update 0051.N皇后.md Go版本

This commit is contained in:
chengleqi
2022-01-17 22:07:48 +08:00
parent fa60195c2a
commit d941915829

View File

@ -346,70 +346,57 @@ class Solution {
### Go ### Go
```Go ```Go
import "strings" func solveNQueens(n int) [][]string {
var res [][]string var res [][]string
chessboard := make([][]string, n)
func isValid(board [][]string, row, col int) (res bool){ for i := 0; i < n; i++ {
n := len(board) chessboard[i] = make([]string, n)
for i:=0; i < row; i++ {
if board[i][col] == "Q" {
return false
}
} }
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
if board[row][i] == "Q" { for j := 0; j < n; j++ {
return false chessboard[i][j] = "."
} }
} }
var backtrack func(int)
for i ,j := row, col; i >= 0 && j >=0 ; i, j = i - 1, j- 1{ backtrack = func(row int) {
if board[i][j] == "Q"{ if row == n {
return false temp := make([]string, n)
} for i, rowStr := range chessboard {
} temp[i] = strings.Join(rowStr, "")
for i, j := row, col; i >=0 && j < n; i,j = i-1, j+1 {
if board[i][j] == "Q" {
return false
}
}
return true
}
func backtrack(board [][]string, row int) {
size := len(board)
if row == size{
temp := make([]string, size)
for i := 0; i<size;i++{
temp[i] = strings.Join(board[i],"")
} }
res = append(res, temp) res = append(res, temp)
return return
} }
for col := 0; col < size; col++ {
if !isValid(board, row, col){
continue
}
board[row][col] = "Q"
backtrack(board, row+1)
board[row][col] = "."
}
}
func solveNQueens(n int) [][]string {
res = [][]string{}
board := make([][]string, n)
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
board[i] = make([]string, n) if isValid(n, row, i, chessboard) {
} chessboard[row][i] = "Q"
for i := 0; i < n; i++{ backtrack(row + 1)
for j := 0; j<n;j++{ chessboard[row][i] = "."
board[i][j] = "."
} }
} }
backtrack(board, 0) }
backtrack(0)
return res return res
} }
func isValid(n, row, col int, chessboard [][]string) bool {
for i := 0; i < row; i++ {
if chessboard[i][col] == "Q" {
return false
}
}
for i, j := row-1, col-1; i >= 0 && j >= 0; i, j = i-1, j-1 {
if chessboard[i][j] == "Q" {
return false
}
}
for i, j := row-1, col+1; i >= 0 && j < n; i, j = i-1, j+1 {
if chessboard[i][j] == "Q" {
return false
}
}
return true
}
``` ```
### Javascript ### Javascript
```Javascript ```Javascript