目录
【算法题】寻找能够直接攻击国王的黑皇后 —— 解题思路与代码实现
【算法题】寻找能够直接攻击国王的黑皇后 —— 解题思路与代码实现
题目描述
在一个 8×8 的国际象棋棋盘上,棋盘的下标从 0 开始(即坐标范围为 0~7)。棋盘上有若干个黑皇后(Queen)和一个白国王(King),给出黑皇后的坐标数组 queens
和国王的坐标 king
。
queens
是一个二维整数数组,每个元素queens[i] = [x, y]
表示第 i 个黑皇后的位置。king = [x, y]
表示白国王的位置。
黑皇后可以沿水平方向、垂直方向和两个对角线方向任意距离攻击。请返回所有能够直接攻击白国王的黑皇后坐标,能够直接攻击的意思是,从国王出发,沿上述8个方向找到的第一个黑皇后(如果有的话)。返回的结果可以是任意顺序。
解题分析
皇后在国际象棋中是攻击力最强的棋子之一,它可以沿行、列以及对角线方向攻击任意距离内的敌方棋子。给定国王位置,我们需要判断从国王出发的8个方向上,是否存在皇后,并且该皇后是该方向上第一个遇到的棋子。
换句话说,题目的核心在于沿国王所在位置向8个方向遍历,找到离国王最近的皇后。
8个方向
考虑二维矩阵坐标的增减:
方向 |
dx |
dy |
说明 |
下 |
+1 |
0 |
x 增加,y 不变 |
上 |
-1 |
0 |
x 减少,y 不变 |
右 |