LeetCode每日一题:1222. 可以攻击国王的皇后(2023.9.14 C++)

目录

1222. 可以攻击国王的皇后

题目描述:

实现代码与解析:

模拟

原理思路:


1222. 可以攻击国王的皇后

题目描述:

在一个 8x8 的棋盘上,放置着若干「黑皇后」和一个「白国王」。

给定一个由整数坐标组成的数组 queens ,表示黑皇后的位置;以及一对坐标 king ,表示白国王的位置,返回所有可以攻击国王的皇后的坐标(任意顺序)。

示例 1:

输入:queens = [[0,1],[1,0],[4,0],[0,4],[3,3],[2,4]], king = [0,0]
输出:[[0,1],[1,0],[3,3]]
解释: 
[0,1] 的皇后可以攻击到国王,因为他们在同一行上。 
[1,0] 的皇后可以攻击到国王,因为他们在同一列上。 
[3,3] 的皇后可以攻击到国王,因为他们在同一条对角线上。 
[0,4] 的皇后无法攻击到国王,因为她被位于 [0,1] 的皇后挡住了。 
[4,0] 的皇后无法攻击到国王,因为她被位于 [1,0] 的皇后挡住了。 
[2,4] 的皇后无法攻击到国王,因为她和国王不在同一行/列/对角线上。

示例 2:

输入:queens = [[0,0],[1,1],[2,2],[3,4],[3,5],[4,4],[4,5]], king = [3,3]
输出:[[2,2],[3,4],[4,4]]

示例 3:

输入:queens = [[5,6],[7,7],[2,1],[0,7],[1,6],[5,1],[3,7],[0,3],[4,0],[1,2],[6,3],[5,0],[0,4],[2,2],[1,1],[6,4],[5,4],[0,0],[2,6],[4,5],[5,2],[1,4],[7,5],[2,3],[0,5],[4,2],[1,0],[2,7],[0,1],[4,6],[6,1],[0,6],[4,3],[1,7]], king = [3,4]
输出:[[2,3],[1,4],[1,6],[3,7],[4,3],[5,4],[4,5]]

提示:

  • 1 <= queens.length <= 63
  • queens[i].length == 2
  • 0 <= queens[i][j] < 8
  • king.length == 2
  • 0 <= king[0], king[1] < 8
  • 一个棋盘格上最多只能放置一枚棋子。

实现代码与解析:

模拟

class Solution {
public:vector<vector<int>> queensAttacktheKing(vector<vector<int>>& queens, vector<int>& king) {bool isQueue[8][8] = {false};for (auto t: queens) {int x = t[0], y = t[1];isQueue[x][y] = true;}vector<vector<int>> res;int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};int dy[8] = {1, 0, -1, 1, -1, 1, 0, -1};for (int i = 0; i < 8; i++){int x = king[0] + dx[i], y = king[1] + dy[i]; // 国王当前位置while (x >= 0 && x < 8 && y >= 0 && y < 8){if (isQueue[x][y]){res.push_back({x, y});break;}x += dx[i];y += dy[i];}}return res;}
}

原理思路:

  1. 首先,代码定义了一个二维布尔数组 isQueue,用于表示棋盘上的每个位置是否有皇后。数组的大小是8x8,初始值都设置为 false

  2. 接下来,通过一个循环遍历输入参数 queens,其中 queens 是一个表示皇后位置的二维整数向量。循环将每个皇后的位置标记在 isQueue 数组中,将相应位置设为 true

  3. 创建一个空的二维整数向量 res,用于存储可以攻击到国王的皇后的位置。

  4. 定义两个一维整数数组 dxdy,它们分别表示了8个可能的方向。dx 用于水平方向的偏移量,dy 用于垂直方向的偏移量。这两个数组用于确定每个方向上国王下一步可能的位置。

  5. 通过一个循环遍历8个可能的方向。在每个方向上,从国王的当前位置开始,通过逐步增加 xy 的值来移动。在每一步中,代码检查该位置是否有皇后(通过检查 isQueue[x][y] 的值),如果有皇后,则将该位置添加到 res 中,并且终止该方向的移动(因为皇后可以阻止进一步移动)。

  6. 最后,返回存储着可以攻击到国王的皇后位置的 res 二维整数向量。

        核心思想是遍历8个可能的方向,从国王的位置出发,检查每个方向上是否有皇后,如果有就将其位置添加到结果中。这样,最终得到的 res 就包含了可以攻击到国王的皇后的位置坐标。

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

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

相关文章

小美的数组操作2---牛客周赛 Round 11

注意给a[ 0 ]赋一个最小值 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N1e55; int t,n,m,a[N],cnt[N]; int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i1;i<n;i){scanf(&q…

go语言基础--面向对象杂谈

面向过程 所谓的面向过程就是&#xff1a;强调的是步骤、过程、每一步都是自己亲自去实现的。 面向对象 所谓的面向对象其实就是找一个专门做这个事的人来做&#xff0c;不用关心具体怎么实现的。 所以说&#xff0c;面向过程强调的是过程&#xff0c;步骤。而面向对象强调的…

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套

蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套 第十四届蓝桥杯省赛真题 1、要把下面4张图片重新排列成蜗牛的画像,该如何排列这些图片 A、 B、 C、 D、 答案:A 考点分析:主要考查小朋友们的观察能力空

向量的概念、向量组的概念

目录 向量的概念、向量组的概念 向量的基本运算 线性表出、线性相关、线性无关 向量的概念、向量组的概念 向量&#xff08;Vector&#xff09;是一个有次序的数所组成的数组&#xff0c;通常用来表示一个物理量或者一个对象在空间中的移动。向量可以表示位置、速度、力等物…

SpringMVC之文件上传下载以及jrebel的使用

目录 一.文件上传 1.1.导入依赖 1.2.配置文件上传解析器 ​​​​​​​ 1.3 配置服务器存放文件地址 1.3.1.点击编辑Configurations 1.3.2.将项目部署至tomcat服务器上 1.3.3.配置相对路径 1.4.导入PropertiesUtil工具类 1.5.编写resource.properties 1.6.添加sql 1.7.编写…

【C语言】扫雷小游戏(保姆教程)

目录 一、扫雷游戏介绍 二、代码分装 三、代码实现步骤 1. 制作菜单menu函数以及游戏运行逻辑流程 2. 数组棋盘分析 3. 创建棋盘数组 4. 初始化棋盘InitBoard函数 5. 显示棋盘DisplayBoard函数 6. 布置雷SetMine函数 7. 统计雷个数GetMineCount函数 8. 排查雷FindMine函…

算法分析与设计编程题 动态规划

矩阵连乘 题目描述 解题代码 void printOptimalParens(vector<vector<int>>& partition, int i, int j) {if (i j) cout << "A" << i; // 单个矩阵&#xff0c;无需划分else {cout << "(";printOptimalParens(partit…

网络安全中的欺骗攻击与防御技术

在Internet上计算机之间相互进行的交流建立在两个前提之下&#xff1a;认证、信任。 认证是网络上的计算机用于相互间进行识别的一种鉴别过程&#xff0c;经过认证的过程&#xff0c;获准相互交流的计算机之间就会建立起相互信任的关系。信任和认证具有逆反关系&#xff0c;即…

爬虫逆向实战(33)-某联社数据(webpack)

一、数据接口分析 主页地址&#xff1a;某联社 1、抓包 通过抓包可以发现数据接口是/nodeapi/telegraphList 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个sign加密参数 请求头是否加密&#xff1f; 无 响应是否加密&#x…

性能监控-grafana+prometheus+node_exporter

Prometheus是一个开源的系统监控和报警工具。它由SoundCloud开发并于2012年发布&#xff0c;后来成为了一个独立的开源项目&#xff0c;并得到了广泛的应用和支持。 Prometheus的主要功能包括采集和存储各种系统和应用程序的监控数据&#xff0c;并提供强大的查询语言PromQL来…

【云原生】kubectl常用命令大全

目录 一、资源管理方法 kubectl 的命令大全 二、 kubectl常用命令大全 2.2 项目的生命周期&#xff1a;创建-->发布-->更新-->回滚-->删除 1、创建 kubectl create命令 2、发布 kubectl expose命令 3、更新 kubectl set 4、回滚 kubectl rollou…

线性代数的本质(九)——二次型与合同

文章目录 二次型与合同二次型与标准型二次型的分类度量矩阵与合同 二次型与合同 二次型与标准型 Grant&#xff1a;二次型研究的是二次曲面在不同基下的坐标变换 由解析几何的知识&#xff0c;我们了解到二次函数的一次项和常数项只是对函数图像进行平移&#xff0c;并不会改变…