--- title: leetcode-999 date: 2020-03-30 21:03:25 tags: categories: leetcode --- ### 999. 可以被一步捕获的棋子数 [题目](https://leetcode-cn.com/problems/available-captures-for-rook/) 遍历一遍找到车的坐标,然后按上下左右四个方向循环一下看碰到的第一个棋子是什么。 ```python class Solution: def numRookCaptures(self, board) -> int: i = j = 0 for row in board: if 'R' in row: break i += 1 j = row.index('R') count = 0 # right for x in range(j + 1, 8): if row[x] == 'p': count += 1 break if row[x] == 'B': break # left for x in range(j, 0, -1): if row[x] == 'p': count += 1 break if row[x] == 'B': break # up for x in range(i, 0, -1): if board[x][j] == 'p': count += 1 break if board[x][j] == 'B': break # down for x in range(i+1, 8): if board[x][j] == 'p': count += 1 break if board[x][j] == 'B': break return count #36 ms 13.6 MB ``` 问题不难,官方解答中给了一个方向数组的概念,上下左右是 (0, 1) (0, -1) (-1, 0) (1, 0),有点像向量的意思。走的路线等于方向数组乘以步数。