LeeCode前端算法基础100题(3)- N皇后

news2024/11/17 11:47:27

一、问题详情:

        按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

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

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

        每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。

示例 1:

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1
输出:[["Q"]]

提示:

  • 1 <= n <= 9

二、我的答案:

/**
 * @param {number} n
 * @return {number}
 */
var totalNQueens = function(n) {
    let count = 0;
  const cols = new Set(); // 列上是否有皇后
  const diagonals1 = new Set(); // 左上到右下对角线上是否有皇后
  const diagonals2 = new Set(); // 右上到左下对角线上是否有皇后

  function backtrack(row) {
    if (row === n) {
      // 找到一个解决方案
      count++;
      return;
    }

    for (let col = 0; col < n; col++) {
      const diagonal1 = row - col;
      const diagonal2 = row + col;

      if (!cols.has(col) && !diagonals1.has(diagonal1) && !diagonals2.has(diagonal2)) {
        cols.add(col);
        diagonals1.add(diagonal1);
        diagonals2.add(diagonal2);

        backtrack(row + 1); // 继续下一行的回溯

        cols.delete(col);
        diagonals1.delete(diagonal1);
        diagonals2.delete(diagonal2);
      }
    }
  }

  backtrack(0); // 从第一行开始回溯

  return count;
};

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

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

相关文章

Navicat 技术指引 | 适用于 GaussDB 的用户权限设置

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

项目经理只需要有PMP证书就行?

就目前而言&#xff0c;大部分人对于项目经理的认识还停留在&#xff1a;有项目管理经验&#xff0c;有对应的工作年限&#xff0c;有PMP证书。所以绝大多数人都认为只要报考了PMP项目管理&#xff0c;取得PMP证书&#xff0c;即可加入项目经理的圈子&#xff0c;薪资翻倍。 但…

餐饮门店做小程序的作用是什么

我国餐饮行业市场规模逐步上升&#xff0c;中国到店餐饮平台致力于做深做透大餐饮的战略布局&#xff0c;从营销、配送、IT系统、供应链等多角度全方位服务餐饮行业&#xff0c;数字化赋能商家&#xff0c;促进线上线下融合发展&#xff0c;以形成餐饮行业生态闭环。 餐饮行业…

2023APMCM亚太杯数学建模选题建议及初步思路

大家好呀&#xff0c;亚太杯数学建模开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c;本次亚太杯推荐选择B题。 C题如果想做好&#xff0c;搜集数据难度并不低&#xff0c;并且模型比较简单&#xff0c;此外目前选择的人数过多&#xff0c…

2023上海小学生古诗文大会复赛(复选)在线模拟题库更新到503题

为了帮助参加2023年上海小学生古诗文大会复选&#xff08;复赛&#xff09;的孩子们更好地练习和备考&#xff0c;我这几天制作了一个在线练习的模拟题库。 这个在线模拟题对标市级比赛的形式和样式&#xff0c;具有以下特点和功能&#xff1a; 1、可以通过手机、电脑、平板&a…

C语言--给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组

一.题目描述&#xff1a; 给定一个数组&#xff0c;把第一项的值减去第二项的值&#xff0c;第二项的值减去第三项的值&#xff0c;第三项的值减去第四项的值&#xff0c;依次类推。放到一个新的数组中&#xff0c;并打印新的数组。 比如&#xff1a;输入一个数组是5&#xff…

springboot 拦截器中使用@Value注解为null

拦截器中获取配置参数为null 代码如下&#xff1a; 解决方式一&#xff1a; 检查你的WebMvcConfigurer实现类&#xff0c;比如我的是CCBWebMvcConfig 将拦截器以bean的形式注入&#xff1a; 我之前的写法是new 一个放进去的&#xff0c;这种会导致Value为null AutowiredJSCCB…

如何在Linux系统上检测GPU显存和使用情况?

如何在Linux系统上检测GPU显存和使用情况&#xff1f; 在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0…

服务器安全如何保障

主机安全是指保护计算机主机&#xff08;也称为服务器、终端或主机设备&#xff09;免受潜在的安全威胁和攻击的一系列措施和实践。主机安全旨在防止未经授权的访问、数据泄露、恶意软件感染和其他安全漏洞的利用&#xff0c;主机一旦被黑客入侵&#xff0c;企业会面临很多安全…

【实用】mysql配置 及将线上数据导入本地 问题解决及记录

[ERR] 1292 - Incorrect datetime value: ‘0000-00-0000:00:00‘ for column ‘BIRTH_DATE‘ at row 1 此问题是mysql当前配置不支持日期为空&#xff0c;或者为‘0000-00-0000:00:00‘得情况 1、直接在数据库执行 # 修改全局 set global.sql_mode ONLY_FULL_GROUP_BY,STR…

PC8259(CC-CV控制)同步降压芯片5V/4.8A 输出频率可调 带电流限制 QFN20封装

概述 PC8259是一个同步降压转换器输出电流为4.8A在9V至36V。外部关闭功能可以由逻辑电平控制以下拉COMP/EN引脚&#xff0c;然后进入待机模式。外部补偿使反馈控制具有良好的线性以及具有灵活外部设计的负载调节。PC8259在CC&#xff08;恒定输出电流&#xff09;模式或CV&…

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关&#xff0c;所以是小问题&#xff0c;经过来回调试安装numpy&#xff0c;发现是因为目前的版本太高&#xff0c;因此我们直接安装低版本numpy。也不用专门卸载目前的…

python pymodbus库使用教程(以Modbus RTU为例)

文档&#xff1a; https://pymodbus.readthedocs.io/en/latest/ 源码&#xff1a; https://github.com/riptideio/pymodbus/ 文章目录 Python PyModbus库使用教程&#xff1a;以Modbus RTU为例介绍安装PyModbus配置串行连接导入必要的模块创建Modbus客户端实例 建立连接连接…

[autojs]利用console实现悬浮窗日志输出

"ui"; ui.layout(<vertical><button id"autoFloatWindow" text"开启悬浮窗" textSize"15sp" /><button id"autoService" text"开启无障碍服务" textSize"15sp" /><button id"…

手把手教你如何提交App备案

手把手教你如何提交App备案 随着工信部出台了《工业和信息化部关于开展移动互联网应用程序备案工作的通知》对于我司所使用的到的移动应用APP就需要做app备案&#xff0c;今天用游戏app手把手教你如何提交App备案。 基本操作流程 运营、市场 提供需要备案的APP名称、主体、A…

如何避免Steam搬砖项目中账号被盗

购买steam余额有风险吗&#xff1f;及N种被红锁的情况 相信最近很多人都已经听说过steam游戏搬砖这个项目&#xff0c;也叫CSGO游戏搬砖项目&#xff0c;还有人叫它&#xff1a;国外steam游戏汇率差项目&#xff0c;无论怎么称呼&#xff0c;都是同一个项目。 那么什么是stea…

封装一个基于ThreeJS渲染基础模型的类,非常简单,可拖动可缩放

工作需求要求threeJS渲染一个模型以供可视化大屏展示&#xff0c;抛出模型精度不谈&#xff0c;只说业务实现 1.Three.JS的引入 ThreeJS官网地址:Three.js – JavaScript 3D Library 查看文档 中文切换及安装创建步骤 如果是自己研究学习用的&#xff0c;在官网安装完后&…

Docker部署单机nginx

一、拉取镜像运行容器 docker run -d --name nginx-server -v /opt/nginx-server:/home/work/tools/nginx/dist/html:ro nginx-d 后台运行 –name 为这个容器命名 -v 挂载&#xff0c;目录映射 /opt/nginx-server:/home/work/tools/nginx/dist/html 容器内地址&#xff1a;本地…

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…

抖音汽车租赁小程序技术指南:开发高效便捷的租赁系统

为了更好地满足用户需求&#xff0c;抖音汽车租赁小程序成为一个备受关注的技术解决方案。本文将深入探讨开发高效便捷的汽车租赁系统所需的技术要点&#xff0c;为开发者提供一份实用的技术指南。 小程序架构选择 在搭建抖音汽车租赁小程序时&#xff0c;选择合适的小程序架构…