博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode @python 130. Surrounded Regions
阅读量:5158 次
发布时间:2019-06-13

本文共 1681 字,大约阅读时间需要 5 分钟。

题目链接

题目原文

Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.

A region is captured by flipping all 'O's into 'X's in that surrounded region.

For example,

X X X X
X O O X
X X O X
X O X X
After running your function, the board should be:

X X X X

X X X X
X X X X
X O X X

题目大意

给出一个铺满O或者X的区域,将被X围住的O都换成X

解题思路

使用BFS从边上开始搜索,如果是'O',那么搜索'O'周围的元素,并将'O'置换为'D',这样每条边都DFS或者BFS一遍。而内部的'O'是不会改变的。这样下来,没有被围住的'O'全都被置换成了'D',被围住的'O'还是'O',没有改变。然后遍历一遍,将'O'置换为'X',将'D'置换为'O'。

代码

class Solution(object):    def solve(self, board):        """        :type board: List[List[str]]        :rtype: void Do not return anything, modify board in-place instead.        """        def fill(x, y):            if x < 0 or x > m - 1 or y < 0 or y > n - 1 or board[x][y] != 'O':                return            queue.append((x, y))            board[x][y] = 'D'        def bfs(x, y):            if board[x][y] == 'O':                fill(x, y)            while queue:                cur = queue.pop(0)                i = cur[0]                j = cur[1]                fill(i + 1, j)                fill(i - 1, j)                fill(i, j + 1)                fill(i, j - 1)        if len(board) == 0:            return        m = len(board)        n = len(board[0])        queue = []        for i in range(n):            bfs(0, i)            bfs(m - 1, i)        for j in range(1, m - 1):            bfs(j, 0)            bfs(j, n - 1)        for i in range(m):            for j in range(n):                if board[i][j] == 'D':                    board[i][j] = 'O'                elif board[i][j] == 'O':                    board[i][j] = 'X'

转载于:https://www.cnblogs.com/slurm/p/5349456.html

你可能感兴趣的文章
Hibernate一级缓存
查看>>
jQuery鼠标经过图片切换
查看>>
listview和简单的记事本操作
查看>>
ssis包部署
查看>>
pat 1006 Sign In and Sign Out (25)
查看>>
shell
查看>>
poj1459 最大流Dinic
查看>>
20155320 2016-2017-2《Java程序设计》第十周学习总结
查看>>
第4次作业类测试代码+149+肖雷
查看>>
xshell SSH 连接出现 outgoing encryption ,或者no matching host key algorithm found错误的解决...
查看>>
第三方库Mantle的简单实用
查看>>
算法45----逆波兰数【栈】
查看>>
jar包重启脚本-restart.sh
查看>>
P3372 【模板】线段树 1
查看>>
剑指offer题解02-10
查看>>
安装 SQL Server 2008,不断要求重启电脑,解决办法
查看>>
001.SSH配置文件
查看>>
node知识积累
查看>>
HDU 1710 Binary Tree Traversals
查看>>
mina 字节数组编解码器的写法 II
查看>>