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的更多相关文章

  1. [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 & ...

随机推荐

  1. MySQL:数据操作

    数据操作 一.插入数据 1.所有字段插入数据 语法: insert into 数据表名(字段名) values(插入的数据);(标准)insert into 数据表名values(插入的数据); 实例 ...

  2. 2017年4月12日16:53:54 mysql 还有没看过的命令,spring boot rabbitmq的几种应用场景,mybaties的几种句柄及其映射规则

    ON DUPLICATE KEY UPDATE rabbitmq:http://www.cnblogs.com/ityouknow/p/6120544.html      http://blog.cs ...

  3. 剑指Offer 55. 链表中环的入口结点 (链表)

    题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 题目地址 https://www.nowcoder.com/practice/253d2c59ec3e4bc68d ...

  4. 7--Python入门--条件和循环

    5.1 条件语句 条件语句基本框架如下:if 判断语句1: 执行语句块1elif 判断语句2: 执行语句块2else: 执行语句块3 a = 10 if a%2 == 0 : #这里使用了取余函数% ...

  5. 3.python集合

    1.集合1.不同元素组成2.无序排列的可hash值3.集合中元素必须是不可变类型(数字,字符串,元祖) 2.集合创建:(1)定义可变类型集合set:把里面元素一个一个进行for循环往大括号里放 set ...

  6. Arch Linux 的休眠设置

    https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate_(简体中文)https://wiki.archl ...

  7. java初始重点语法

    第三章 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容"); ...

  8. redux进一步优化

    1. 将原来的  mapStateToDispatch  中的函数提取出来,放在组件中, 如原来的: function mapStateToProps(state, ownProps) { retur ...

  9. C# 调用打印机 打印 Excel

    打印 Excel 模板 大体思路,通过NPOI操作Excel文件,通过Spire将Excel转成图片,将图片传给系统打印. Spire是收费工具,在微软库中下载Free版本. #region 打印所用 ...

  10. CentOS6.8 配置LVM

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. LVM ...