【LeetCode笔记】51. N 皇后(DFS、经典题)

文章目录

  • 题目描述
  • 思路 && 代码

题目描述

  • 经典题了…但是大一敲过后就再没碰过了。结果面试还是会问= =,今天补一下~
    在这里插入图片描述
    在这里插入图片描述

思路 && 代码

  • 还是挺清晰的,要点如下:
    1. 使用 DFS,找到一个了再继续找
    2. 对每一行,逐列进行可行点选择
    3. 放置点可行判断:【对低行进行】列、45度、135度判断
    4. 答案格式转换,char[][] 变成 List
class Solution {List<List<String>> ans = new ArrayList<>(); // 全局变量,记录答案char[][] graph;public List<List<String>> solveNQueens(int n) {// 1、地图初始化graph = new char[n][n];for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {graph[i][j] = '.';}}// 2、DFS 获取答案dfs(0);return ans;}void dfs(int row) {// 1、递归结束,加入答案if(row == graph.length) {ans.add(array2List());}// 2、对当前行,逐列进行判断、DFSfor(int col = 0; col < graph[0].length; col++) {if(judge(row, col)) {graph[row][col] = 'Q';dfs(row + 1);graph[row][col] = '.';}}}// 判断可行:行不用,因为一行只放一个。高行不用,因为还没放棋子boolean judge(int row, int col) {// 1、列for(int i = row - 1; i >= 0; i--) {if(graph[i][col] == 'Q') {return false;}}// 2、45度for(int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {if(graph[i][j] == 'Q') {return false;}}// 3、135度for(int i = row - 1, j = col + 1; i >= 0 && j < graph[0].length; i--, j++) {if(graph[i][j] == 'Q') {return false;}}return true;}// 转换答案格式。List<String> array2List() {List<String> list = new ArrayList<>();for(int i = 0; i < graph.length; i++) {list.add(String.valueOf(graph[i]));}return list;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab中结束脚本运行_matlab学习总结(入门篇)

更新&#xff08;2020.3.31&#xff09;&#xff1a;发现MATLAB在网络经济学的仿真模拟方面有很大帮助&#xff0c;主要是构造一个 的方阵来刻画任意两个个体之间的关系。更新&#xff08;2017.6.11&#xff09;:最近用matlab完成了随机过程的两次编程作业&#xff0c;感觉还是…

表格c1等于a1加b1_中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!...

导读&#xff1a;中国最牛驾照&#xff0c;C1、B1、B2、A1、A2随便开&#xff0c;被称为万能的驾照&#xff01;现在社会上的汽车越来越多了&#xff0c;而车主们&#xff0c;想要行车上路&#xff0c;除了要有车&#xff0c;还要有一样必须的东西&#xff0c;那就是驾照。驾照…

【LeetCode笔记】117.填充每个节点的下一个右侧节点指针 II(二叉树、DFS)

文章目录题目描述思路 && 代码题目描述 很烦…面试被这题干碎了&#xff0c;赶紧给查漏补缺一波&#xff01; 思路 && 代码 主要思路&#xff1a;先右&#xff0c;再左&#xff08;因为左边依赖右边&#xff01;&#xff09;getNext()&#xff1a;当前节点…

r720支持多少频率的内存吗_电脑基础知识:内存条知识大全,看完小学生都了解...

一、基础知识如果你不了解内存条&#xff0c;如果你只知道内存容量越大越好&#xff0c;如果你想更加了解内存条&#xff0c;不妨来看看这里&#xff0c;今天给大家分享那些最简单也是最容易理解的内存条知识。1、定义、作用内存条又叫随机存取存储器&#xff0c;是一种存储技术…

关键词堆砌生成器_网络推广软件的使用和24种关键词挖掘方法

第398-399期网络推广学习&#xff0c;主讲课程&#xff1a;推广软件的使用和24种关键词的挖掘方法。具体内容如下&#xff1a;一、商务卫士&#xff08;宣传易&#xff09;主要的功能&#xff1a;1.商情推广2&#xff0c;产品添加&#xff08;20个以上&#xff09;3.百宝箱>…

【LeetCode笔记】299. 猜数字游戏 (Java、偏数学)

文章目录题目描述思路 && 代码题目描述 顶级阅读题&#xff01;今天的每日一题&#xff0c;感觉评论区大佬的写法挺值得记录的&#xff0c;就又水了一篇答题文&#xff5e; 思路 && 代码 O(n)、O(1)核心代码&#xff1a;Case 2 的两个 if 处理&#xff0c;…

currenthashmap如何实现线程安全_什么是多线程?如何实现多线程?

什么是进程&#xff1f;电脑中时会有很多单独运行的程序&#xff0c;每个程序有一个独立的进程&#xff0c;而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管家等等。什么是线程&#xff1f;进程想要执行任务就需要依赖线程。换句话说&#xff0c;就是进程中的…

python字典会自动排序_python中字典不自动排序的用法

1、python 字典的用法from collections import OrderedDictdict OrderedDict()dict[foo]3dcit[aol]12、python中删除指定类型的文件import sys, csv , operatorimport osimport globfor i in range(0, 10):path "C:\\Folder_" str(i)for infile in glob.glob( os.p…

【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)

文章目录题目描述思路 && 代码DFS动态规划新系列&#xff5e;用于区分开高频题和每日一题&#xff5e; 题目描述 一眼二分&#xff0c;但是实际上并不是这题让我想到社团的猜数字游戏…但是给钱是真过分了 思路 && 代码 DFS 自底向上进行递归。Math.max(…

python汉字同义词替换_python同义词替换的实现(jieba分词)

TihuanWords.txt文档格式注意&#xff1a;同一行的词用单个空格隔开&#xff0c;每行第一个词为同行词的替换词。年休假 年假 年休究竟 到底回家场景 我回来了代码import jiebadef replaceSynonymWords(string1):# 1读取同义词表&#xff0c;并生成一个字典。combine_dict {}#…

python去重语句_Python对列表去重的多种方法(四种方法)

无聊统计了下列表去重到底有多少种方法。下面小编给大家总结一下&#xff0c;具体内容详情如下&#xff1b; 开发中对数组、列表去重是非常常见的需求&#xff0c;对一个list中的id进行去重&#xff0c;有下面几种方法&#xff0c;前面两种方法不能保证顺序&#xff0c; 后面两…

【LeetCode笔记 - 每日一题】318. 最大单词长度乘积(Java、位运算)

文章目录题目描述思路 && 代码题目描述 挺不错&#xff01;有bitmap的感觉了。 思路 && 代码 思路好想&#xff1a;两两对比&#xff0c;无公共判断&#xff0c;维护 res那么&#xff0c;如何进行公共判断&#xff1f;这个是主要的问题给每个字符串&#x…

技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...

“导读&#xff1a;在很多人的认知里&#xff0c;软件著作权是软件著作权&#xff0c;专利是专利&#xff0c;两者并没有太多关联。甚至有的人认为&#xff0c;软件产品只能申请软件著作权保护&#xff0c;不能申请专利保护。但是&#xff0c;当有人抄袭你的软件设计理念&#…

python如何爬虫eps数据_入门Python爬虫 -- 解析数据篇

元素&#xff09;。一般情况下&#xff0c;网页头部分会定义HTML文档的编码以及网页的标题。而网页体部分则决定着一个网页中的正文内容。 # 一个最基本的HTML文档&#xff1a;# 网页头部分内容# 定义文档编码 文档的标题# 网页头部分内容结束# 网页体部分内容 文档的正文内容#…

【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)

文章目录题目描述思路 && 代码题目描述 中等题&#xff0c;很赞&#xff01;第一次碰到涉及洗牌算法的题有点涉及概率&#xff0c;主要是要实现公平的随机 思路 && 代码 采用了 Knuth 洗牌算法&#xff0c;可以看看这篇博客时间复杂度O(N)&#xff0c;空间…

python redis模块connectionerror_ConnectionError:Error 2连接到Python/Django Redis中的unix套接字...

我正在尝试在一个全新的Mac上运行一个django项目。它一直工作到昨天&#xff0c;我不知道发生了什么&#xff0c;但突然间我开始收到Redis错误。在我可以加载不查询数据库的页面&#xff0c;但是一旦我尝试进行搜索(部分依赖于Redis)&#xff0c;它就不起作用了。在有什么想法吗…

split函数python 未定义_python split函数基本用法

Python split()方法描述&#xff1a; Python split() 通过指定分隔符对字符串进行切片&#xff0c;如果参数 num 有指定值&#xff0c;则分割成 (num1) 个子字符串。语法&#xff1a; str.split(str"", numstring.count(str))参数&#xff1a; str——分隔符&#xf…

【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)

文章目录题目描述思路 && 代码题目描述 看了题目以后想到啥&#xff1f; 字符数量统计银行家算法逐个拆解建立数字 - 字符串的全局映射 思路 && 代码 抄答案了&#xff0c;采取了评论区三叶dalao的写法&#xff08;不得不说&#xff0c;人家的处理写法是真…

字符串的地址_面试题:我有一批IPv6地址,你帮我想个办法来存储?

作者&#xff1a;dadiyang-绪扬来源&#xff1a;公众号Java面试那些事儿之前写了一篇《面试题&#xff1a;请用代码实现ip地址与int之间互换&#xff1f;》&#xff0c;有读者评论问到 IPv6 的转换方法&#xff0c;于是抽时间也自己实现了一下。面试官&#xff1a;我有一批IPv6…

【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)

文章目录题目描述思路 && 代码题目描述 又是涉及到均等概率的随机&#xff5e; 思路 && 代码 用的题解区三叶的代码&#xff5e;写得是真的好&#xff01;不论题目&#xff0c;但抄一遍代码都能觉得有收获&#xff01;维度转化&#xff1a;并没有创造二维数…