[leetcode-52]N-QueensII(java)

问题描述:
Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

分析:该题与上道基本一样,只是有些细节需要改变一下,比如这题要求返还的是count值,而这个值是不能通过传参进去来得到的。所以只能通过返回值来实现。

代码如下:248ms

    private int  solve(int n,int index,List<Integer> tmpList){
        if(n==index){
            return 1;
        }
        int count = 0;
        for(int col = 0;col<n;col++){
            int row = index;
            int rowList;
            for(rowList = 0;rowList<tmpList.size();rowList++){
                int rowrow = rowList;
                int colcol = tmpList.get(rowrow);
                //同一列
                if(col == colcol)
                    break;
                //同一斜线
                if(Math.abs(rowrow-row)==Math.abs(colcol-col))
                    break;
            }
            if(rowList==tmpList.size()) {
                tmpList.add(col);
                int val = solve(n, index + 1, tmpList);
                tmpList.remove(tmpList.size()-1);
                if(val>0) {
                    count += val;
                }
            }
        }
        return count;
    }
    public int totalNQueens(int n){
        List<Integer> tmpList = new LinkedList<>();
        return solve(n, 0, tmpList);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值