leetcode1030
class Solution(object):
def __init__(self):
self.List = list() def bfs(self,R,C,S,V):
T = list()
while len(S) >0:
node = S.pop(0)
if node[0]-1>=0 and V[node[0]-1][node[1]] == 0:
V[node[0]-1][node[1]] = 1
T.append([node[0]-1,node[1]])
self.List.append([node[0]-1,node[1]])
if node[0]+1<R and V[node[0]+1][node[1]] == 0:
V[node[0]+1][node[1]] = 1
T.append([node[0]+1,node[1]])
self.List.append([node[0]+1,node[1]])
if node[1]-1>=0 and V[node[0]][node[1]-1] == 0:
V[node[0]][node[1]-1] = 1
T.append([node[0],node[1]-1])
self.List.append([node[0],node[1]-1])
if node[1]+1<C and V[node[0]][node[1]+1] == 0:
V[node[0]][node[1]+1] = 1
T.append([node[0],node[1]+1])
self.List.append([node[0],node[1]+1])
if len(T)>0:
self.bfs(R,C,T,V) def allCellsDistOrder(self, R: int, C: int, r0: int, c0: int) -> 'List[List[int]]':
stack = list()
visited = [[0 for col in range(C)] for row in range(R)]
stack.append([r0,c0])
visited[r0][c0] = 1
self.List.append([r0,c0])
self.bfs(R,C,stack,visited)
return self.List
典型的BFS算法,每一“层”都比前一层的距离多1,因此按层遍历的顺序,即为所求。
leetcode1030的更多相关文章
- [Swift]LeetCode1030. 距离顺序排列矩阵单元格 | Matrix Cells in Distance Order
We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 & ...
随机推荐
- go example
一个简单的博客系统 https://github.com/pingguoxueyuan/gostudy/tree/master/blogger
- python自学第11天-单线程并发、迭代器,序列化,获取路径
单线程并发 import time def consumer(name): print("%s 准备吃包子了"%name) while True: baozi=yield#变成一个 ...
- apk签名的流程
最后总结一下apk签名的整个流程: 一.对Apk中的每个文件做一次算法(数据SHA1摘要+Base64编码),保存到MANIFEST.MF文件中 二.对MANIFEST.MF整个文件做一次算法(数据S ...
- 关于WebAPI跨域踩到的一点坑
最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一 ...
- 《CSS揭秘》之毛玻璃效果知识点
实现代码: CodePen:毛玻璃效果 Dabblet:毛玻璃效果 HTML: <main> <blockquote> <em>"The only way ...
- build to win读后感
在软件开发的过程中,不能盲目去show自己的成果,而是要大量考虑别人的意见,在广范围的撒网之后,收集意见,最后在一锤定音. 还有就是,要懂得团队合作,例如,本文介绍了一个事例,作者的团队与科研团队合作 ...
- error: invalid use of void expression
void*类型定义的指针变量只可以接收对象的地址,而没有对象类型这个概念.所以void*指针变量是不能直接用“*指针变量”去访问,需要强制类型转换后才能“间接”访问: *(type*)指针变量,必须给 ...
- Linux 判断进程是否运行
问题 linux平台 多人开发服务器,有时自己运行一个进程在服务器上,但未知原因导致停止运行了,需要添加一个定时任务,用于监控指定进程是否运行 方法 一个通用的方法,以便使用在不同项目中. 思路:定时 ...
- bootstrap弹出模态框会给body加padding的解决方法
bootstrap弹出模态框会给body加padding,导致页面缩放的解决方法: 在页面或是css文件里加上($paddingSize为less变量,需要改成像素或是其他单位,如12px,1rem) ...
- Ubuntu 12.04图形界面不能登录问题
问题描述: Ubuntu 12.04进入到登录界面,输入用户名和密码无法登录, 输出密码后又跳回到登录界面, 执行快捷键Ctrl+Alt+F1, 可以进入tty1命令行, 可以root或者普通用 ...