51. N-Queens(N皇后)

题目链接:https://leetcode.com/problems/n-queens/

思路:回溯法,如果你会写八皇后问题,那么这道题就很简单了。

AC 5ms Java:

具体思路注释在程序中了。

class Solution {
    List> ans=new ArrayList();
    public List> solveNQueens(int n) {
        String[][] strs=new String[n][n];
        for(int i=0;in-1){//当行数大于N-1时,说明已经找到了一组解。
            List list=new ArrayList();
            for(int i=0;i=0&&j>=0;i--,j--){
            if(strs[i][j].equals("Q"))//检查左上对角线冲突
                return false;
        }
        for(int i=row-1,j=col+1;i>=0&&j

我的程序有两个地方还可以优化,一个是二维数组初始化哪里,

另一个就是当此数组满足条件时添加结果到ans里。

 

*********************************************************************************************************************************************************************************************************二更的华丽分界线*****************************************************************************

后来发现用char数组代替String数组在速度上要快不少。

AC 3ms beats 96% Java:

class Solution {
    List> ans=new ArrayList();
    public List> solveNQueens(int n) {
        char[][] chars=new char[n][n];
        for(int i=0;in-1){//当行数大于N-1时,说明已经找到了一组解。
            List list=new ArrayList();
            for(int i=0;i=0&&j>=0;i--,j--){
            if(chars[i][j]=='Q')//检查左上对角线冲突
                return false;
        }
        for(int i=row-1,j=col+1;i>=0&&j

 

你可能感兴趣的:(Leetcode,N皇后,回溯,N-Queens)