LeetCode 52. N-Queens II

本题是要求n皇后的解法:看起来甚至比N-Queens(求全部的解)还简单,很容易写出下面的代码:

import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 the n
     * @return int整型
     */
    //private List> rs;
    private int cnt;
    // 从上往下 一行行排
    private void helper(int[] board,int row){
        if(row==board.length){
            cnt++;
        }
        for(int i=0;i();
        helper(new int[n],0);
        return cnt;
    }
}

上述代码在lc能通过,但是在牛客上不能通过全部的测试用例,只能过87%

搜了一下,发现因为这里不需要求出全部的解,那么可以做一些优化:

class Solution {
    private int cnt;
    // 分别用来表示当前行,当前主副对角线是否有queen
    private boolean[] cols;
    private boolean[] dg1;
    private boolean[] dg2;
    private void heleper(int r){
        if(r==cols.length){
            cnt++;
            return;
        }
        for(int i=0;i

(刷题因为中间荒废了一段时间 现在还是需要循序渐进 这个思路理解了半天 当然也可能是我状态问题

加油

你可能感兴趣的:(LeetCode 52. N-Queens II)