题目描述:
The n-queens puzzle is the problem of placing n queens on an n×n
chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.Each solution contains a distinct board configuration of the n-queens’
placement, where ‘Q’ and ‘.’ both indicate a queen and an empty space
respectively.
解决方法:
两个方法都是通过递归来解决问题,方法一是我自己编写的,方法二是参考leetcode代码的,方法二的思路与方法一类似,但是方法二对皇后状态的存储进行优化,加快了运行速度同时也减少了运行时间。
class Solution {
public List<List<String>> solveNQueens(int n) {
int[][] chessboard = new int[n][n];
int[][] au = new int[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
au[i][j] = n;
return solve(chessboard, au, 0, n);
}
public List<List<String>> solve(int[][] chessboard, int[][] au, int row, int n){
List<List<String>> res = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++){
sb.append(".");
}
if (row == n-1){
for (int i = 0; i < n; i