n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给定一个整数 n,返回 n 皇后不同的解决方案的数量。

示例:

输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[[".Q..",  // 解法 1"...Q","Q...","..Q."],["..Q.",  // 解法 2"Q...","...Q",".Q.."]
]

还是和上一题N皇后1解法一样,只是不用存储皇后的位置,代码简化了

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;class Solution {// outputList<List<String>> res = new ArrayList();Set<Integer> col = new HashSet<>();Set<Integer> na = new HashSet<>();Set<Integer> pie = new HashSet<>();private int n;private int total;public int totalNQueens(int n) {this.n = n;backtrack(0);return total;}public void backtrack(int row){if(n==row){total++;return;}// 针对每一列,尝试是否可以放置for (int colunm = 0; colunm < n; colunm++) {if (!col.contains(colunm) && !pie.contains(row + colunm) && !na.contains(row - colunm)) {col.add(colunm);pie.add(row + colunm);na.add(row - colunm);backtrack(row+1);na.remove(row - colunm);pie.remove(row + colunm);col.remove(colunm);}}}
}

leetcode刷题(53)——52. N皇后 II相关推荐

  1. 如何判断链表中是否存在环?Floyd判圈算法 leetcode刷题笔记 142. 环形链表 II

    这道题使用了floyd判圈算法,所以先讲解floyd算法的原理和实现,最后在附加上第142题的代码. floyd算法: 一.用途: 可以在有限状态机.迭代函数或者链表上判断是否存在环,求出该环的起点与 ...

  2. C#LeetCode刷题之#598-范围求和 II​​​​​​​(Range Addition II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...

  3. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

  4. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  5. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  6. leetcode 刷题 119. 杨辉三角II

    给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 解答: class Soluti ...

  7. C#LeetCode刷题之#63-不同路径 II​​​​​​​(Unique Paths II)

    目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3682 访问. 一个机器人位于一个 m x ...

  8. C#LeetCode刷题之#40-组合总和 II(Combination Sum II)

    目录 问题 示例 分析 问题 该文章已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3666 访问. 给定一个数组 candidates ...

  9. C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)

    目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...

  10. C#LeetCode刷题之#541-反转字符串 II(Reverse String II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3951 访问. 给定一个字符串和一个整数 k,你需要对从字符串开头 ...

最新文章

  1. pyqt5中使用QtDesigner生成ui文件
  2. 基于遗传算法优化的BP神经网络的 非线性函数拟合
  3. 程序员如果也能像C罗一样自律和勤奋,必将成为大神!
  4. 数据结构课程设计---最长公共子串
  5. 远程桌面无法找到计算机不属于指定网络,远程桌面找不到计算机
  6. Microsoft MVC3 框架
  7. NLP之路-Deep Learning in NLP (一)词向量和语言模型
  8. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法
  9. LoadRunner11破解方法
  10. 【预测模型】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
  11. matlab高斯滤波器
  12. 看完这篇文章,小白也能快速安装谷歌服务框架(GApps)!
  13. 史上最详细的MYSQL安装步骤
  14. 群晖挂载阿里网盘通过 cloud sync 实现加密备份
  15. 林锐-《我的大学十年》
  16. import cv2时出现ImportError: DLL load fail:找不到指定模块
  17. 工作笔记-thingworx连接mongdb
  18. python 将一串数字形式的时间转换为标准时间格式
  19. Word在试图打开文件时遇到错误。 请尝试下列方法: 检查文档或驱动器的文件权限。 确保有足够的内存和磁盘空间。 用文本恢复转换器打开文件。
  20. Leetcode 变位词组

热门文章

  1. Eureka注册原理解析
  2. 企业注册小知识科普问答?
  3. 筛选用户权限子集记录
  4. 大数据分析技术研究报告(三-1)
  5. 神经网路:pytorch中Variable和view参数解析
  6. 【VS开发】Windows上的音频采集技术
  7. Spreading the Wealth( UVA - 11300)
  8. 基于.NET的房屋交易系统的设计与实现
  9. STA - Clock Groups:set_clock_groups
  10. 数据与智能融合,新赛道的投资机会如何判断?