leetcode刷题(53)——52. N皇后 II
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相关推荐
- 如何判断链表中是否存在环?Floyd判圈算法 leetcode刷题笔记 142. 环形链表 II
这道题使用了floyd判圈算法,所以先讲解floyd算法的原理和实现,最后在附加上第142题的代码. floyd算法: 一.用途: 可以在有限状态机.迭代函数或者链表上判断是否存在环,求出该环的起点与 ...
- C#LeetCode刷题之#598-范围求和 II(Range Addition II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...
- Leetcode刷题笔记——剑指offer II (六)【图】
文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...
- Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】
目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- leetcode 刷题 119. 杨辉三角II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 解答: class Soluti ...
- C#LeetCode刷题之#63-不同路径 II(Unique Paths II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3682 访问. 一个机器人位于一个 m x ...
- C#LeetCode刷题之#40-组合总和 II(Combination Sum II)
目录 问题 示例 分析 问题 该文章已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3666 访问. 给定一个数组 candidates ...
- C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...
- C#LeetCode刷题之#541-反转字符串 II(Reverse String II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3951 访问. 给定一个字符串和一个整数 k,你需要对从字符串开头 ...
最新文章
- pyqt5中使用QtDesigner生成ui文件
- 基于遗传算法优化的BP神经网络的 非线性函数拟合
- 程序员如果也能像C罗一样自律和勤奋,必将成为大神!
- 数据结构课程设计---最长公共子串
- 远程桌面无法找到计算机不属于指定网络,远程桌面找不到计算机
- Microsoft MVC3 框架
- NLP之路-Deep Learning in NLP (一)词向量和语言模型
- Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法
- LoadRunner11破解方法
- 【预测模型】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
- matlab高斯滤波器
- 看完这篇文章,小白也能快速安装谷歌服务框架(GApps)!
- 史上最详细的MYSQL安装步骤
- 群晖挂载阿里网盘通过 cloud sync 实现加密备份
- 林锐-《我的大学十年》
- import cv2时出现ImportError: DLL load fail:找不到指定模块
- 工作笔记-thingworx连接mongdb
- python 将一串数字形式的时间转换为标准时间格式
- Word在试图打开文件时遇到错误。 请尝试下列方法: 检查文档或驱动器的文件权限。 确保有足够的内存和磁盘空间。 用文本恢复转换器打开文件。
- Leetcode 变位词组