[LeetCode]题解(python):130-Surrounded Regions
题目来源:
https://leetcode.com/problems/surrounded-regions/
题意分析:
给定给一个二维的板,这个板只包括‘X’和‘O’。将被‘X’包围的‘O’变成‘X’。比如:
X X X X
X O O X
X X O X
X O X X
得到:
X X X X
X X X X
X X X X
X O X X
题目思路:
从板的周围出发,从周围的‘O’出发深度搜索,能搜到的‘O’用visit记录他有没有访问过。最后将所有没有visit过的'O'变成‘X’.
代码(python):
class Solution(object):
def solve(self, board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
m = len(board)
if m == 0:
return
n = len(board[0])
visit = [[False for i in range(n)] for j in range(m)]
def dfs(i,j):
q = []
q.append([i,j])
while len(q) != 0:
tmp = q[0]
#print(tmp,visit[3][1],board[3][1])
q.pop(0)
#down,up,left,right
if tmp[0] - 1 > 0 and board[tmp[0] - 1][tmp[1]] == 'O' and visit[tmp[0]-1][tmp[1]] == False:
visit[tmp[0] -1][tmp[1]] = True
q.append([tmp[0] - 1,tmp[1]])
if tmp[0] + 1 < m and board[tmp[0] + 1][tmp[1]] == 'O' and visit[tmp[0]+1][tmp[1]] == False:
visit[tmp[0] +1][tmp[1]] = True
q.append([tmp[0] + 1,tmp[1]])
if tmp[1] - 1 > 0 and board[tmp[0]][tmp[1] - 1] == 'O' and visit[tmp[0]][tmp[1]-1] == False:
visit[tmp[0]][tmp[1] - 1] = True
q.append([tmp[0],tmp[1] - 1])
if tmp[1] + 1 < n and board[tmp[0]][tmp[1] + 1] == 'O' and visit[tmp[0]][tmp[1]+1] == False:
visit[tmp[0]][tmp[1]+1] = True
q.append([tmp[0],tmp[1]+1])
for i in range(n):
if visit[0][i] == False and board[0][i] == 'O':
visit[0][i] = True
dfs(0,i)
if visit[m - 1][i] == False and board[m-1][i] == 'O':
visit[m-1][i] = True
dfs(m - 1,i)
for j in range(m):
if visit[j][0] == False and board[j][0] == 'O':
visit[j][0] = True
dfs(j,0)
if visit[j][n - 1] == False and board[j][n - 1] == 'O':
visit[j][n - 1] = True
dfs(j,n - 1)
for i in range(m):
for j in range(n):
if board[i][j] == 'O' and not visit[i][j]:
board[i][j] = 'X'
[LeetCode]题解(python):130-Surrounded Regions的更多相关文章
- leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions
两种方式处理已经访问过的节点:一种是用visited存储已经访问过的1:另一种是通过改变原始数值的值,比如将1改成-1,这样小于等于0的都会停止. Number of Islands 用了第一种方式, ...
- 130. Surrounded Regions(M)
130.Add to List 130. Surrounded Regions Given a 2D board containing 'X' and 'O' (the letter O), capt ...
- [LeetCode] 130. Surrounded Regions 包围区域
Given a 2D board containing 'X' and 'O'(the letter O), capture all regions surrounded by 'X'. A regi ...
- 【LeetCode】130. Surrounded Regions (2 solutions)
Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...
- 【一天一道LeetCode】#130. Surrounded Regions
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- leetcode 130 Surrounded Regions(BFS)
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- Leetcode 130. Surrounded Regions
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- Java for LeetCode 130 Surrounded Regions
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- Leetcode 130 Surrounded Regions DFS
将内部的O点变成X input X X X XX O O X X X O XX O X X output X X X XX X X XX X X XX O X X DFS的基本框架是 void dfs ...
- 130. Surrounded Regions
题目: Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is capt ...
随机推荐
- 比较两个data日期之间的天数相差
先将字符串转化为Date类型 转化方式参看:http://blog.csdn.net/caoyinghui1986/archive/2008/04/18/2303570.aspx 然后在调用Date. ...
- struts2的初步认识!
struts2的jar包会完成一些工作,让你的数据和显示很好的联系在一起. 开始的时候,主要通过三个点来完成Struts2的工作 1,JAVA类 2,struts.x ...
- 用纯jsp实现用户的登录、注册与退出
用户的登录.注册和退出是一个系统最常见的功能,现将各功能用jsp代码表示出来 用户的登录: 其中connDB是数据库连接类,将用户名username放入session中 <%@ page con ...
- 使用my97datepicker控件实现日期范围选择
注:(2014-12-05内容修改:添加运行效果) 使用my97datepicker 控件,需要对日期的范围进行控制,本人自己写了一个js完成此功能,示例为当前日期到下一周周五之间的日期可选,其他日期 ...
- Javascript基础篇小结
转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器 ...
- Linux用户及用户组管理
Linux是个优秀的多用户多任务操作系统. 掌握Linux的用户/用户组管理是基本及必备技能之一. 简单做下总结. 无论采用图形界面的用户管理设置,还是终端的管理方式,最终目的都是对系统的用户/用户组 ...
- 关于HTTP 协议的特点,以及网络请求GET 和 POST 的区别?
HTTP协议有何特点: HTTP 超文本的传输协议,是短连接,是客户端主动发送请求,服务器做出响应,服务器响应之后连接断开 HTTP是属于应用层面向对象的协议,HTTP 有2类报文:请求报文和响应报文 ...
- Maven java项目管理工具
Maven java项目管理工具 1.安装maven 下载最新的maven 下载地址 http://maven.apache.org/download.cgi 传到要安装的目录 例如/opt/下 # ...
- 根据用户的ID查用户的名字
awk -F: '{if($3==0){print $1}}' /etc/passwd
- SQL Server 查看数据表占用空间大小的SQL语句
) ) if object_id('tempdb..#space') is not null drop table #space ),rows ),data ),index_size ),unused ...