—Easy
https://leetcode.com/problems/available-captures-for-rook/
Code:
class Solution: def numRookCaptures(self, board) -> int: ans_cnt = 0 m = len(board) n = len(board[0]) for i in range(m): for j in range(n): if board[i][j] == 'R': for e in range(0,i)[::-1]: if board[e][j] == 'p': ans_cnt += 1 #print('is here :', e, j) break if board[e][j] == 'B': break if board[e][j] == '.': continue for e in range(i+1,m): if board[e][j] == 'p': ans_cnt += 1 #print('is here :', e, j) break if board[e][j] == 'B': break if board[e][j] == '.': continue for e in range(0,j)[::-1]: if board[i][e] == 'p': ans_cnt += 1 #print('is here :', i, e) break if board[i][e] == 'B': break if board[i][e] == '.': continue for e in range(j+1,n): if board[i][e] == 'p': ans_cnt += 1 #print('is here :',i,e) break if board[i][e] == 'B': break if board[i][e] == '.': continue break return ans_cnt # s = Solution() # print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]])) # print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]])) # print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","p",".",".",".","."],["p","p",".","R",".","p","B","."],[".",".",".",".",".",".",".","."],[".",".",".","B",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."]]))
思路:
1.找到R的位置进行上下左右四个方向遍历即可
2.range的逆序