【力扣每日一题】2023.9.14 可以攻击国王的王后

news2024/11/26 21:35:26

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

给我们皇后和国王的坐标,问我们哪些皇后可以攻击到国王。

这个应该是国际象棋的走子规则,皇后的攻击范围在跟皇后的同一行或是同一列或是同一条斜线。

所以我们可以从每个皇后的攻击范围中寻找国王,如果找得到,那么就表示这个皇后可以攻击到国王,不过这样会比较麻烦,而且如果在皇后攻击到国王的路径中有另一个皇后,那么这个皇后不能绕过另一个皇后去攻击国王,这样又多了不少判断条件。

因此我们从国王入手,正所谓你凝视深渊的时候,深渊也在凝视着你,如果一个皇后可以攻击到国王,那么就意味着国王也可以通过同样的攻击手段去攻击皇后。

所以我们去国王所在的行和列以及斜线上一共八个方向去寻找皇后。由于皇后不能绕过另一个皇后去攻击国王,因此我们在国王的每个方向上,只取离国王最近的皇后。

如上图所示,在国王左上角方向上有两个皇后,我们只取离国王最近的皇后。

由于每个方向只能取一个皇后,因此在我们返回的答案之中最多只能有八个。

代码:

class Solution {
public:
    vector<vector<int>> queensAttacktheKing(vector<vector<int>>& queens, vector<int>& king) {
        set<vector<int>>s;
        for(auto queen:queens) s.insert(queen);
        vector<vector<int>>res;
        int j1=king[1]-1,j2=king[1]+1;
        vector<bool> flag(3,true);
        for(int i=king[0]-1;i>=0;i--){          //往上寻找
            if(flag[0]&&s.count({i,king[1]})){  //正上方寻找
                res.push_back({i,king[1]});
                flag[0]=false;
            }
            if(flag[1]&&j1>=0){                 //左上方寻找
                if(s.count({i,j1})){
                    res.push_back({i,j1});
                    flag[1]=false;
                }
            }
            if(flag[2]&&j2<8){                  //右上方寻找
                if(s.count({i,j2})){
                    res.push_back({i,j2});
                    flag[2]=false;
                }
            }
            j1--,j2++;
        }
        flag={true,true,true};
        j1=king[1]-1,j2=king[1]+1;
        for(int i=king[0]+1;i<8;i++){           //往下方寻找
            if(flag[0]&&s.count({i,king[1]})){  //正下方寻找
                res.push_back({i,king[1]});
                flag[0]=false;
            }
            if(flag[1]&&j1>=0){                 //左下方寻找
                if(s.count({i,j1})){
                    res.push_back({i,j1});
                    flag[1]=false;
                }
            }
            if(flag[2]&&j2<8){                  //右下方寻找
                if(s.count({i,j2})){
                    res.push_back({i,j2});
                    flag[2]=false;
                }
            }
            j1--,j2++;
        }
        for(int j=king[1]-1;j>=0;j--){          //正左方寻找
            if(s.count({king[0],j})){
                res.push_back({king[0],j});
                break;
            }
        }
        for(int j=king[1]+1;j<8;j++){           //正右方寻找
            if(s.count({king[0],j})){
                res.push_back({king[0],j});
                break;
            }
        }
        return res;
    }
};

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

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

相关文章

阿里云CDN缓存配置及优化

参考阿里云官网文档&#xff1a;https://help.aliyun.com/practice_detail/603170 缓存时间配置 在缓存管理中&#xff0c;可以方便地指定目录和文件后缀名在CDN节点上的缓存时间&#xff0c;缓存时长配置的长短&#xff0c;取决于源站对该文件的变更频率。我们需要分析下业务中…

存储创新靠软件?

IT产业在经历10多年的狂飙后&#xff0c;近两年在创新速度上看似开始"乏力"&#xff0c;即使iPhone&#xff0c;每一次发布会后也被吐槽缺乏创新。 其实&#xff0c;IT产品在过去十多年的快速发展后&#xff0c;的确在硬件发展方面遇到了一些瓶颈。但一个产品创新能…

【论文阅读】MARS:用于自动驾驶的实例感知、模块化和现实模拟器

【论文阅读】MARS&#xff1a;用于自动驾驶的实例感知、模块化和现实模拟器 Abstract1 Introduction2 Method2.1 Scene Representation2.3 Towards Realistic Rendering2.4 Optimization3.1 Photorealistic Rendering3.2 Instance-wise Editing3.3 The blessing of moduler des…

怎么压缩视频?视频过大跟我这样压缩

在日常生活中&#xff0c;我们常常会遇到需要上传或者发送视频的情况&#xff0c;然而&#xff0c;有时候视频文件过大&#xff0c;无法顺利上传或发送&#xff0c;这时候就需要对视频进行压缩。那么&#xff0c;如何有效地压缩视频呢&#xff1f;看完下面三个方法你就明白了。…

在四维轻云中,能够上传哪些地理空间数据?

四维轻云是一款地理空间数据在线管理软件&#xff0c;支持各类地理空间数据的在线管理、浏览及分享&#xff0c;用户可不受时间地点限制&#xff0c;随时随地上传、管理、查看及分享各类地理空间数据。软件还具有项目管理、场景搭建、素材库等功能模块&#xff0c;支持在线协作…

软件测试/测试开发名企定向培养训练营,升职加薪快人一步!

测试人员如何提升核心竞争力 作为一个测试工程师&#xff0c;自动化测试已经是必须要掌握的技能了。学习自动化测试有两个难点&#xff0c;除了其本身拥有一定的技术门槛之外&#xff0c;实战经验才是学习自动化测试的最大难点。部分初中级测试工程师往往在掌握了基本的编程与…

jupyter notebook找不到python内核(kernel)的解决记录

文章来源&#xff1a;jupyter notebook找不到python内核(kernel)的解决记录 – WhiteNights Site 貌似导致这个问题的原因有非常多&#xff0c;这里只是说一个可能的解决方法。 前情提要&#xff1a;在费了九牛二虎之力&#xff0c;终于安装成功了jupyter notebook&#xff0c;…

ubuntu设置初始的root密码

在用vmware安装ubuntu的虚拟机后&#xff0c;只有初始设置的用户和密码&#xff0c;当进入系统后使用su切换成root账户后&#xff0c;要求输入密码&#xff0c;但输入安装时设置的用户密码不对&#xff0c;需要设置初始的root密码。 解决&#xff1a; 1、使用安装时候的用户登…

一份责任、一个意识、一种情怀,名酒担当剑南春擦亮公益品牌,连续8年助力“高考”!

海南八月&#xff0c;椰风海韵&#xff0c;青春飞扬。 来自全国各地的150余名准大学新生&#xff0c;齐聚南海之滨&#xff0c;开启“剑南春2023强国青年爱国之旅西沙群岛游”。 知名教育专家张雪峰启航致辞、三沙市银屿岛升旗仪式、西沙群岛特别课程《照见未来的一节课》、中…

Java“牵手”唯品会商品详情数据,唯品会商品详情接口,唯品会API接口申请指南

唯品会商城是中国最大的会员制特卖电商平台之一&#xff0c;于2008年创立。它以低至1折的深度折扣及充满乐趣的限时抢购模式&#xff0c;为消费者提供一站式优质购物体验。 唯品会定位于"一家专门做特卖的网站"&#xff0c;每天上新品。它与全球3000多家品牌及供应商…

SSL双向认证-SpringBoot项目

SSL双向认证需要CA证书&#xff0c;开发过程可以利用自签CA证书进行调试验证。 自签CA证书生成过程&#xff1a;SSL双向认证-自签CA证书生成 1.将server.p12证书和client.jks证书复制到项目resources目录下 2.修改配置文件&#xff0c;增加下述内容 #https端口 server.port…

华为云云耀云服务器L实例评测|基于宝塔部署SpringBoot后端+前端工程

目录 前言 一、云耀云服务器L实例购买 1.远程登录并重置密码 2. 第三方登录 二、宝塔Linux面板初始化 1.开放宝塔8888端口 2.初始化宝塔 3.登录宝塔后台 三、宝塔软件安装 1.安装ftp 2.配置JDK 四、Springboot工程部署 1.创建JDK管理 2.上传springboot工程jar包 3.新建Java项目…

【HarmonyOS】如何实现应用内引用HSP模块中ArkUI组件

【关键字】 HSP开发、引入HSP模块中ArkUI组件 【写在前面】 在使用ArkTS开发HarmonyOS应用时&#xff0c;通常会定义一些公共组件或公共接口功能&#xff0c;此时可以将这些功能封装到HSP模块中&#xff0c;然后通过在HSP模块中导出组件或接口方式在其他模块中引用&#xff0…

掌握Power Pages Power Apps 画布应用,创造无限可能!

在这个数字化时代&#xff0c;企业要保持竞争力&#xff0c;不仅需要紧跟科技的步伐&#xff0c;还需要拥有创新的工具和战略。为了帮助您的组织更好地适应变化&#xff0c;世达教育根据企业定制推出的“Power Pages & Power Apps 画布应用”课程&#xff0c;已经圆满结束&…

Python中的异常处理4-3

在《Python中的异常处理4-2》中提到&#xff0c;except语句后面可以加上具体的异常类型。有时我们需要这个异常的其他细节&#xff0c;此时可以使用except...as语句。 1 except...as语句 except..as语句的格式为 except 异常类型 as 异常实例名 从以上格式中可以看到&#…

最新版ESP32 IDF环境搭建教程:基于CLION同时安装多个版本的IDF

最新版ESP32 IDF环境搭建教程 说明下载ESP32 IDF下载并激活CLION同时安装多个版本的IDF参考 说明 通过CLION配置了V445和V503版本的IDF。通过将环境变量添加在BAT文件中&#xff0c;解决了安装两个版本的IDF冲突的问题。CLION配置IDF效果要比VSCODE好&#xff0c;vscode代码补…

PAT (Basic Level) Practice 1045~1066

PTA Basic Level Practice 解题思路和代码&#xff0c;主要用的是 C。每22题一篇博客&#xff0c;可以按目录来进行寻找。 文章目录 1045 快速排序1046 划拳1047 编程团体赛1048 数字加密1049 数列的片段和1050 螺旋矩阵1051 复数乘法1052 卖个萌1053 住房空置率1054 求平均值1…

Redis 集合(Set)快速指南 | Navicat

Redis 支持通过多种数据类型来存储项目集合。其中&#xff0c;包括列表、集合和哈希。上周的博文介绍了列表&#xff08;List&#xff09;数据类型并重点介绍了一些用于管理列表&#xff08;List&#xff09;的主要命令。在今天的文章中&#xff0c;我们将转向关注集合&#xf…

SpringBoot 整合 Websocket 通信demo (附浏览器聊天窗口)

1. 依赖 <!-- SpringBoot WebSocket --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>2. 自动注册配置类 import org.springframework.context…

Timeline的使用心得

timeline使用教程 timeline使用主要分为一下几步&#xff1a; 1、新建表格&#xff1b; 2、设置数据 3、发布网址 4、修改表格样式&#xff1b; 5、快速预览 需要用到的几个网址&#xff1a; 1、timeline官网网址&#xff1a;timeline 2、本地图片转链接&#xff1a;图片转链…