首页 > 其他 > 详细

130被围绕的区域

时间:2020-08-11 11:31:16      阅读:46      评论:0      收藏:0      [点我收藏+]
from typing import List
# 这道题的思路是从矩阵的四周开始寻找,如果这个字符为O,就向上下左右递归,
# 先将找到的O转化为其他字符,最后将没有找到的O转化为X,将找到的O不变
class Solution:
def solve(self, board: List[List[str]]) -> None:
# 如果列表为空或者列表中为空,返回空
if not board or not board[0] :return
# 定义行和列
row,col = len(board),len(board[0])
# 定义递归函数
def dfs(index1, index2):
# 首先将进来的转化为其他字符
board[index1][index2] = "B"
# 然后上下左右递归
for x, y in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
# 注意这里不能直接在index1上边相加减
i = index1 + x
j = index2 + y
# 注意这里一定是从1开始的,否则就是错误的。
if 1 <= i < row and 1 <= j < col and board[i][j] == "O":
dfs(i,j)
# 寻找第一列和最后一列
for i in range(row):
if board[i][0] == "O":
dfs(i,0)
if board[i][col - 1] == "O":
dfs(i,col - 1)
# 寻找第一行和最后一行
for i in range(col):
if board[0][i] == "O":
dfs(0,i)
if board[row - 1][i] == "O":
dfs(row - 1,i)
# 将字符恢复原位。
for i in range(row):
for j in range(col):
if board[i][j] == "O":
board[i][j] = "X"
if board[i][j] == "B":
board[i][j] = "O"


A = Solution()
A.solve([["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]])




130被围绕的区域

原文:https://www.cnblogs.com/cong12586/p/13474198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!