-
发表于 2024.07.09
-
类似于1958-检查操作是否合法,枚举八个方向,如果有一个方向具有皇后,则将该皇后坐标添加到结果数组中(后续该方向不用寻找了,只关注该方向的第一个皇后),然后转向下一个方向继续寻找。
class Solution: moves = ( (-1, 0), # 左 (1, 0), # 右 (0, -1), # 上 (0, 1), # 下 (-1, -1), # 左上 (1, 1), # 右下 (1, -1), # 左下 (-1, 1) # 右上 ) def queensAttacktheKing(self, queens: List[List[int]], king: List[int]) -> List[List[int]]: has_queen = [[False] * 8 for _ in range(8)] for r, c in queens: has_queen[r][c] = True ans = [] for move in self.moves: r, c = king while 0 <= r < 8 and 0 <= c < 8: if has_queen[r][c]: ans.append([r, c]) break r, c = r + move[0], c + move[1] return ans
- LC 题目链接
-