leetcode51. N 皇后(java详解)

一:题目

在这里插入图片描述

二:上码

class Solution {/**思路:1.先说我们选用的数据结构;我们是选取的是List<List<string>> ans 来存每次的结果;我们在创建这个二维矩阵的时候用的是char的二维数组,那么的话等到我们得到一种可行解的时候  将char的二维数组每一行转换成 String 并存入 ans 中2:判断可行性1>:不能在同一行2>:不能在同一列3>:不能在同一对角线这里就是给出我们的一个坐标 然后在char[][]数组 遍历上方三个条件那么的话 判断是否合法3.递归三步曲1>:确定递归函数和递归参数void getAns(int rows,int n)2>:确定回溯终止条件if (rows == n) 行数也就是我们的n (rows是从0开始的 那么达到n也就是比正常的范围大一个)3>:确定回溯体    这里的for循环其实就是我们的不同的列那么我们根据参数中的行 那么我们就组成了(行,列)那么的话 我们就可以确定出一个坐标 并根据该坐标是否合法来判断是否给该坐标进行赋值*/private List<List<String>> ans = new ArrayList<>();private char[][] arr;public void fillArr() {for (char[] chA: arr) {Arrays.fill(chA,'.');}}public List<String> getString() {List<String> list = new ArrayList<>();for (char[] chA: arr) {//将二维char数组中的每一行转换成一个字符串 存放在list中list.add(String.copyValueOf(chA));}return list;}//判断坐标(row,col)这个坐标是否合法public boolean isLegal(int row,int col,int n) {    //是否在同一列for (int i = 0; i < row; i++) {if (arr[i][col] == 'Q') return false;}//45°角for (int i = row-1,j = col-1; i >= 0 && j >= 0; i--,j--) {if (arr[i][j] == 'Q') return false;}//135°for (int i = row-1,j = col+1; i >= 0 && j < n; i--,j++) {if (arr[i][j] == 'Q') return false;}return true;}public void getAns(int rows,int n) {if (rows == n) {ans.add(getString());}for (int col = 0; col < n; col++) {if (isLegal(rows,col,n)) {arr[rows][col] = 'Q';getAns(rows+1,n);arr[rows][col] = '.';}}}public List<List<String>> solveNQueens(int n) {arr = new char[n][n];fillArr();getAns(0,n);return ans; }
}

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

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

相关文章

程序员如何跨越35岁危机?这篇给点干货建议!

职场&认知洞察 丨 作者 / findyi这是findyi公众号的第83篇原创文章这两天在我的读者群里做了一个职业小调研&#xff0c;发现关注我公众号的70%以上都是程序员。毕竟程序员吸引程序员&#xff0c;这也算猿粪吧&#xff0c;哈哈。这个小调研也引发大家对程序员行业的激烈探讨…

leetcode455. 分发饼干

一:题目 二:上码 class Solution {public int findContentChildren(int[] g, int[] s) {int ans 0;int gIndex 0;int sIndex 0;Arrays.sort(g);Arrays.sort(s);while (gIndex < g.length && sIndex < s.length) {if (s[sIndex] > g[gIndex]) gIndex; //只…

写了多年代码,你会 StackOverflow 吗

写了多年代码&#xff0c;你会 StackOverflow 吗Intro准备写一个傻逼代码的系列文章&#xff0c;怎么写 StackOverflow 的代码&#xff0c;怎么写死锁代码&#xff0c;怎么写一个把 CPU 跑满&#xff0c;怎么写一个 OutOfMemory 的代码。今天主要来看 StackOverflow&#xff0c…

C#实现迭代器

迭代器模式&#xff08;Iterator&#xff09;&#xff0c;提供一种方法顺序访问一个聚合对象中的各种元素&#xff0c;而又不暴露该对象的内部表示。C#中使用IEnumerator接口实现&#xff0c;Java中使用Iterator接口实现&#xff0c;其中原理都差不多&#xff0c;下面我就用C#代…

从CLR GC到CoreCLR GC看.NET Core为云而生

内存分配概要前段时间在园子里看到有人提到了GC学习的重要性&#xff0c;很赞同他的观点。充分了解GC可以帮助我们更好的认识.NET的设计以及为何在云原生开发中.NET Core会占有更大的优势&#xff0c;这也是一个程序员成长到更高层次所需要经历的过程。在认识GC的过程中&#x…

springboot邮件发送(牛客论坛项目之QQ邮箱发送)

一:邮箱发送原理 1:狂神图解 张三通过smtp协议连接到Smtp服务器&#xff0c;然后发送一封邮件给网易的邮件服务器网易分析发现需要去QQ的邮件服务器&#xff0c;通过Smtp协议将邮件转投给QQ的Smtp服务器QQ将接收到的邮件存储在456789qq.com这个邮件账号的空间中李四通过Pop3协…

如果淘宝双十一架构用. Net Core,如何“擒住”高并发、高可用、低延迟?

电商的秒杀和抢购&#xff0c;对我们来说&#xff0c;都不是一个陌生的东西。然而&#xff0c;从技术的角度来说&#xff0c;这对于Web系统是一个巨大的考验。当一个Web系统&#xff0c;在一秒钟内收到数以万计甚至更多请求时&#xff0c;系统的优化和稳定至关重要。缓存技术是…

.NET5在开发平台上远优于Java,如何发挥优势?

上周.NET5 RC2已发布&#xff0c;.NET5已经肉眼可见的即将到来&#xff0c;令人期待&#xff01;从.NET Framework到.NET Core再到.NET5&#xff0c;能看到诸多开发者和公司都在积极拥抱新技术。对比Java&#xff0c;国内主流开发都还停留在Java8&#xff0c;在云原生的互联网时…

leetcode122. 买卖股票的最佳时机 II

一:题目 二&#xff1a;上码 class Solution {/**思路:1.局部最优:我们买入当前股票等哪天遇见最大值的时候买出 赚最大利润2.全局最优:局部最优推出全局最优3.这个利润是可以被分解的 7 1 5 10利润: -6 4 5那么最大利润是459其实就是1买入10卖出,但是我们可以在5这天…

多重继承和菱形问题

翻译自 John Demetriou 2018年4月8日 的文章 《Multiple Inheritance And The Diamond Problem》[1]开篇之前&#xff0c;我假设每个人都知道在面向对象编程中继承是什么&#xff0c;以及它能提供什么好处。我不会深入探究对象继承的基础知识。这篇文章更关注于多重继承和它所面…

Jekins持续集成在ERP研发中的应用实践

源宝导读&#xff1a;“持续集成”是敏捷最佳实践中&#xff0c;保证高质量交付的关键环节之一。本文将介绍明源云ERP系统在研发过程中&#xff0c;应用Jekins平台完成持续集成自动构建的实践。一、认识持续集成持续集成是一种软件开发实践&#xff0c;即团队开发成员经常集成他…

leetcode45. 跳跃游戏 II(java详解)

一:题目 二:上码 class Solution {public int jump(int[] nums) {int ans 0;int curIndex 0;//当前统计出来的可以移动的最远距离的下标int nextIndex 0;//在到达 当前最远距离下标的这段距离内 我们统计出的可以达到的最远距离//如果在统计的过程中 其覆盖范围已经大于数组…

Ids4 认证保护 API 方案更新

壹时刻保持学习的喜悦可能你咋一看这个标题不知道什么意思&#xff0c;其实我也没想好怎么表达&#xff0c;因为是一个特别简单的小知识点。先说下为什么突然说到了Ids4&#xff1f;这几天大家都知道&#xff0c;我在视频《微服务之eShop讲解》&#xff0c;目前讲到了购物车微服…

dotNet Core 3.1 使用 Aspose (部署 Docker)

在之前的文章《dotNET Core中使用Aspose&#xff08;部署Docker&#xff09;》中介绍了在 dotNet Core2.1 中使用 Aspose &#xff0c;并部署到 Docker 中&#xff0c;现在 dotNET Core 升级到了 3.1 &#xff0c;Docker 镜像发生了变化&#xff0c;一些依赖的安装也有些变化。…

MySQL之一条Update的执行流程

文章目录1:执行的语句2:在更新操作中流程中特有的部分(1):redo log&#xff08;重做日志&#xff09;(2):binlog&#xff08;归档日志&#xff09;(3):Redo日志跟binlog日志的区别2:执行流程1:执行的语句 update T set c c 1 where ID 2;2:在更新操作中流程中特有的部分 (…

教你打入clr内部: 配置windows上的windbg,linux上的lldb

一&#xff1a;背景1. 讲故事前几天公众号里有位兄弟看了几篇文章之后&#xff0c;也准备用windbg试试看&#xff0c;结果这一配就花了好几天&#xff0c;(づ╥﹏╥)づ&#xff0c;我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题&#xff0c;所以我觉得有必…

leetcode周赛6076. 表示一个折线图的最少线段数

气死爹了 用C过不去 换成Java 过了 一:题目 二:上码 class Solution {public int minimumLines(int[][] stockPrices) {Arrays.sort(stockPrices,(o1,o2)->o1[0]-o2[0]);int n stockPrices.length;if (n 1) return 0;int ans 1;for (int i 0; i < n-2; i) {int k1 …

使用代码片段的正确姿势,打造高效的vscode开发环境

全文3928字&#xff0c;阅读时间 10分钟&#xff0c;未来节约时间 15分钟/每天代码片段&#xff08;code snippet&#xff09; 相信大家都或多或少有接触过。在完成一个项目以后&#xff0c;往往都会写出许多有价值的代码&#xff0c;或是绞尽脑汁解决的难题&#xff0c;或是灵…

leetcode周赛6074. 字母在字符串中的百分比

这个简单题也比较狗 上午做的时候一直有个测试点不过 但是题目不给出什么测试点不过 原来是100这个答案 给跪了 一:题目 二:上码 class Solution { public:int percentageLetter(string s, char letter) {if (s.size() 0) return 0;int count 0;for (int i 0; i < s.si…

leetcode周赛6075. 装满石头的背包的最大数量

一:题目 二:上码 class Solution { public:/**思路:求差&#xff0c;将结果放到一个容器当中&#xff0c;然后的话&#xff0c;排序&#xff0c;*/int maximumBags(vector<int>& capacity, vector<int>& rocks, int additionalRocks) {vector<int> …