mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
update 0051.N皇后.md Go版本
This commit is contained in:
@ -346,69 +346,56 @@ class Solution {
|
||||
|
||||
### Go
|
||||
```Go
|
||||
import "strings"
|
||||
var res [][]string
|
||||
|
||||
func isValid(board [][]string, row, col int) (res bool){
|
||||
n := len(board)
|
||||
for i:=0; i < row; i++ {
|
||||
if board[i][col] == "Q" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
for i := 0; i < n; i++{
|
||||
if board[row][i] == "Q" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
for i ,j := row, col; i >= 0 && j >=0 ; i, j = i - 1, j- 1{
|
||||
if board[i][j] == "Q"{
|
||||
return false
|
||||
}
|
||||
}
|
||||
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)
|
||||
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++{
|
||||
board[i] = make([]string, n)
|
||||
}
|
||||
for i := 0; i < n; i++{
|
||||
for j := 0; j<n;j++{
|
||||
board[i][j] = "."
|
||||
}
|
||||
}
|
||||
backtrack(board, 0)
|
||||
var res [][]string
|
||||
chessboard := make([][]string, n)
|
||||
for i := 0; i < n; i++ {
|
||||
chessboard[i] = make([]string, n)
|
||||
}
|
||||
for i := 0; i < n; i++ {
|
||||
for j := 0; j < n; j++ {
|
||||
chessboard[i][j] = "."
|
||||
}
|
||||
}
|
||||
var backtrack func(int)
|
||||
backtrack = func(row int) {
|
||||
if row == n {
|
||||
temp := make([]string, n)
|
||||
for i, rowStr := range chessboard {
|
||||
temp[i] = strings.Join(rowStr, "")
|
||||
}
|
||||
res = append(res, temp)
|
||||
return
|
||||
}
|
||||
for i := 0; i < n; i++ {
|
||||
if isValid(n, row, i, chessboard) {
|
||||
chessboard[row][i] = "Q"
|
||||
backtrack(row + 1)
|
||||
chessboard[row][i] = "."
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
|
Reference in New Issue
Block a user