leetcode52.N皇后II——学习笔记

题目:力扣icon-default.png?t=M0H8https://leetcode-cn.com/problems/n-queens-ii/

class Solution {
    public int totalNQueens(int n) {
        Set diagonal1 = new HashSet();
        Set diagonal2 = new HashSet();
        Set columns = new HashSet();
        int[] map = new int[n];
        Arrays.fill(map,-1);
        return putQueen(n,map,0,columns,diagonal1,diagonal2);
    }

    private int putQueen(int n,int[] map,int row,Set columns,Set diagonal1,Set diagonal2){
        //出口
        if(row==n){
            return 1;
        }else{
            int count = 0;
            //判断
            for(int i=0;i

leetcode52.N皇后II——学习笔记_第1张图片 

 思路:这题与leetcode51.N皇后大同小异,过程是完全一样的,只是leetcode51要求按照规定格式输出,本题只需要输出解的个数。因此,相比于leetcode51.N皇后本题还是简单一些。因此在此不再赘述解题步骤,详情请见leetcode51.N皇后。

1.声明递归方法中需要用到的变量。因为本题不需要按照复杂的格式返回,仅仅需要返回解的数量,所以可以观察到相比于leetcode51少了ans变量。

Set diagonal1 = new HashSet();
Set diagonal2 = new HashSet();
Set columns = new HashSet();
int[] map = new int[n];
Arrays.fill(map,-1);

 2.递归方法putQueen修改如下。入参中不需要ans变量,递归出口修改,增加count变量记录解的个数,最后返回count即可。

    private int putQueen(int n,int[] map,int row,Set columns,Set diagonal1,Set diagonal2){
        //出口
        if(row==n){
            return 1;
        }else{
            int count = 0;
            //判断
            for(int i=0;i

3.在主方法中调用并返回。

return putQueen(n,map,0,columns,diagonal1,diagonal2);

你可能感兴趣的:(Leetcode练习,leetcode,算法,递归算法,深度优先,java)