LeetCode刷题记录:(13)N皇后(难题不难)

在这里插入图片描述

leetcode传送通道

传说中的N皇后,不难,进来了就看完吧
注释序号代表鄙人写代码的顺序和思考逻辑,供参考

class Solution {
    // 1.定义结果数组
    List<List<String>> result = new ArrayList<>();

    public List<List<String>> solveNQueens(int n) {
        // 3.初始化棋盘
        char[][] chess = new char[n][n];
        for(char[] c : chess){
            Arrays.fill(c,'.'); //比较方便但底层也是for循环,并不会提高效率
        }
        // 4.开始递归
        recur(0,chess);
        // 2.返回结果
        return result;
    }

    // 4.定义递归函数
    private void recur(int row, char[][] chess){
        // 4.1 终止条件:最后一行填完了
        if(row == chess.length){
            result.add(array2List(chess)); // 结果要的是一维,转化一下
            return;
        }
        // 4.2 for遍历宽度,recur遍历深度
        for(int col=0; col<chess.length; col++){ // chess是方的,.length也是列数
            if(isValid(row, col, chess)){
                chess[row][col] = 'Q';
                recur(row+1, chess);
                chess[row][col] = '.';
            }
        }
    }

    // 5.皇后合法性检查
    private boolean isValid(int row, int col, char[][] chess){
        //5.1 上面有没有冲突
        for(int r=0; r<row; r++){
            if(chess[r][col]=='Q'){
                return false;
            }
        }
        //5.2 左上有没有冲突
        for(int r=row-1,c=col-1; r>=0 && c>=0; r--,c--){
            if(chess[r][c]=='Q'){
                return false;
            }
        }
        //5.3右上有没有冲突
        for(int r=row-1,c=col+1; r>=0 && c<=chess.length-1; r--,c++){
            if(chess[r][c]=='Q'){
                return false;
            }
        }
        return true;
    }

    // 6. 二维数组降维成一维(题目结果要求)
    private List array2List(char[][] chess){
        List<String> list = new ArrayList<>();
        for(char[] c : chess){
            list.add(new String(c));
        }
        return list;
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

moviepy简介及使用教程

moviepy简介及基本概念 MoviePy 是一个用于视频编辑的 Python 库&#xff0c;使用户能够处理、编辑和操作视频文件。这个库允许你剪辑视频、添加文本、合并视频剪辑&#xff0c;以及应用各种效果和转换。它建立在 NumPy、imageio 和 Decorator 等库的基础上&#xff0c;使得在…

部署mysql,前端,后端

部署mysql docker pull mysql 从镜像源中拉取镜像。 创建mysql容器 docker run -d \--name mysql_container \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \--restartalways \-v /opt/mysql:/var/lib/mysql \mysql -d后台运行&#xff0c;--name指定容器…

点餐小程序开发:如何通过抽奖与消费者互动

随着科技的发展&#xff0c;越来越多的商家开始使用点餐小程序来提升自己的服务质量和效率。然而&#xff0c;仅仅提供点餐服务并不能满足消费者的需求&#xff0c;他们还需要一种方式来增加与商家的互动&#xff0c;提高消费体验。抽奖活动就是一种非常有效的互动方式&#xf…

C++ stack和queue

什么是stack stack就是平常所说的栈&#xff0c;栈只能进行在固定的一端插入数据和删除数据的操作&#xff0c;也就是先进后出&#xff0c;后进先出 什么是queue queue是平常所说的队列&#xff0c;队列就像平常排队吃饭一样&#xff0c;先到的就有饭吃&#xff0c;只能从一端…

C语言每日一题07

一、题目 二、解析 逻辑与 &&、逻辑或 || 均有“短路”特性: 逻辑与&&“短路”&#xff1a;当逻辑与&&的左操作数为逻辑 “假“ 时&#xff0c;就足以判断该逻辑运算的结果为假了&#xff0c;故右操作数就不再被执行。 逻辑或||“短路”&#xff1a…

为什么大家都在“挺”鸿蒙?

试想某一天&#xff0c;应用软件能够在手机、电视、手表甚至汽车等设备上&#xff0c;实现无缝流转、纵享丝滑。 这不仅是畅想&#xff0c;而是鸿蒙正在布局的“遥遥领先”。 随着HarmonyOS NEXT鸿蒙星河版面向开发者开放申请、鸿蒙原生应用版图的基本成型&#xff0c;这个国…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——量子粒子群算法(QDPSO)

基于python语言&#xff0c;采用经典量子粒子群算法&#xff08;QDPSO&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作&#xff0c;目前…

【解决navicat登录报 insufficient privileges 错误】

今天使用navicat sysdba角色登录报 insufficient privileges 以下是解决方案&#xff1a; 1、使用管理员身份打开cmd登录 sqlplus sys/admin as sysdba2、给system用户授权 grant sysdba to system;登录navicat

Git——IDEA中的使用详解

目录 Git1、IDEA中配置Git2、将本地项目推送到远程仓库2.1、创建项目远程仓库2.2、初始化本地仓库2.3、连接远程仓库2.4、提交到本地仓库2.5、推送到远程仓库 3、克隆远程仓库到本地4、基本操作4.1、代码提交到暂存区4.2、暂存区代码提交到本地库4.3、推送到远程仓库4.4、撤销本…

QT的学习

代码练习 做一个UI登录页面 源文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("洛克启动&#xff01;");this->…

[python]bar_chart_race绘制动态条形图

最近在 B 站上看到了一个宝藏 up 主&#xff0c;名叫 "Jannchie见齐"&#xff0c;专门做动态条形图相关的数据可视化。 可以看到做出的效果还是很不错的&#xff0c;但工具使用的是 JS&#xff0c;不是 Python&#xff0c;于是尝试搜索了一下&#xff0c;看看 Python…

C语言实现高精度计时和高精度延时微秒级别

C语言实现高精度计时和高精度延时微秒级别 目的说明环境说明一、高精度延时(微秒级别)二、测试例程三、测试结果 目的说明 在Windows下C语言实现高精度计时功能和高精度延时微秒级别环境说明 Dev-C V5.11一、高精度延时(微秒级别) void vDelayUS(u32 usDelay) {LARGE_INTEGER…

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…

【C++】弥补C语言的不足(②有默认参数的函数)

&#x1f33b;缺省参数 我们先来看一个简单地例子&#xff0c;对于在函数的定义中三个形参都给定默认值&#xff1a; #include <iostream> using namespace std; void fun(int a 10, int b 20, int c 30) {cout << "a " << a << endl;…

RentrantLock关键字详解

一、什么是AQS 全称是 AbstractQueuedSynchronizer&#xff08;队列同步器&#xff0c;下文简称同步器&#xff09;&#xff0c;是阻塞式锁和相关的同步器工具的框架&#xff0c;它是构建锁或者其他同步组件的基础框架。【AQS是实现锁的关键&#xff0c;在锁的实现中聚合同步器…

Python:柱状-折线图

写论文&#xff0c;需要画数据分析图&#xff1a; 用柱状图描述算法执行时间用折线图描述性能改进 示例代码&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocatorSecurity ["128", "192",…

供电营业厅安防监控视频智能监管解决方案

一、方案背景 供电营业厅作为电力服务的重要窗口&#xff0c;其运营效率和客户满意度直接影响到企业的形象和声誉。在传统的监管模式下&#xff0c;供电营业厅的监控系统与其他消防报警、门禁系统等独立运行&#xff0c;无法做到集中管理、综合监控。为了提升供电营业厅的安防及…

windows上打开redis服务闪退问题处理

方法1&#xff1a;在windows上面打开redis服务时&#xff0c;弹窗闪退可能是6379端口占用&#xff0c;可以用以下命令查看&#xff1a; netstat -aon | findstr 6379 如果端口被占用可以用这个命令解决&#xff1a; taskkill /f /pid 进程号 方法2&#xff1a; 可以使用…

Astra plus 深度相机校准标定

前期工作 在ros中已配置Astra plus 并且深度&#xff0c;ir&#xff0c;彩色图像 首先获取依赖项并编译驱动程序 sudo apt install ros-$ROS_DISTRO-camera-calibration 启动相机 source ./devel/setup.bash roslaunch astra_camera astra_plus.launch 查看发布主题 rostop…

HubSpot社交媒体与CRM数据整合:精准定位与营销优化的新路径

在当今数字化时代&#xff0c;社交媒体与CRM&#xff08;客户关系管理&#xff09;系统已经成为企业营销与客户服务的重要工具。然而&#xff0c;这两大系统之间的数据割裂往往导致企业无法充分利用各自的优势&#xff0c;实现更精准的定位和更有效的营销。HubSpot作为一款功能…