ARTS Week 20
Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上,可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens,其中 queens[i] = [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的整数数组 king,其中 king = [xKing, yKing] 表示白国王的位置。 返回 能够直接攻击国王的黑皇后的坐标。你可以以 任何顺序 返回答案。 示例 1: 输入:queens = [[0,1],[1,0],[4,0],[0,4],[3,3],[2,4]], king = [0,0] 输出:[[0,1],[1,0],[3,3]] 解释:上面的图示显示了三个可以直接攻击国王的皇后和三个不能攻击国王的皇后(用红色虚线标记)。 实现代码如下: var queensAttacktheKing = function(queens, king) { // 初始化棋盘 const board = Array.from({ length: 8 }, () => Array.from({ length: 8 }, () => null)); // 将皇后的位置标记在棋盘上 queens.forEach((queen) => { board[queen[0]][queen[1]] = 'Q'; }); const res = []; // 顺时针方向遍历棋盘 const directions = [ [-1, 0], [-1, 1], [0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1] ]; for (const element of directions) { const [dx, dy] = element; let x = king[0] + dx; let y = king[1] + dy; while (x >= 0 && x < 8 && y >= 0 && y < 8) { if (board[x][y] === 'Q') { res.push([x, y]); break; } x += dx; y += dy; } } return res; }; 解题思路: ...