美文网首页
python实现leetcode之130. 被围绕的区域

python实现leetcode之130. 被围绕的区域

作者: 深圳都这么冷 | 来源:发表于2021-10-08 03:32 被阅读0次

    解题思路

    三步走
    第一步:找到边缘的O,将它和与它临接的O都变为A
    第二步:没有变为A的O都是应该变为X的
    第三步:将A变回原来的O

    130. 被围绕的区域

    代码

    class Solution:
        def solve(self, board: List[List[str]]) -> None:
            """
            Do not return anything, modify board in-place instead.
            """
            # 找到边缘的O,将它和与它临接的O都变为A
            for i in range(len(board)):
                for j in range(len(board[i])):
                    if i in [0, len(board)-1] or j in [0, len(board[i])-1]:
                        if board[i][j] == 'O':
                            saved(board, i, j)
            # 没有变为A的O都是应该变为X的
            for i in range(len(board)):
                for j in range(len(board[i])):
                    if board[i][j] == 'O': board[i][j] = 'X'
            # 将A变回原来的O
            for i in range(len(board)):
                for j in range(len(board[i])):
                    if board[i][j] == 'A': board[i][j] = 'O'
    
    
    def saved(matrix, i, j):
        matrix[i][j] = 'A'
        for di in [[0, 1], [0, -1], [1, 0], [-1, 0]]:
            x, y = i+di[0], j+di[1]
            if 0 <= x < len(matrix) and 0 <= y < len(matrix[i]):
                if matrix[x][y] == 'O':
                    saved(matrix, x, y)
    
    效果图

    相关文章

      网友评论

          本文标题:python实现leetcode之130. 被围绕的区域

          本文链接:https://www.haomeiwen.com/subject/imdtoltx.html