当前位置:网站首页>Simulation volume leetcode [general] 1091 The shortest path in binary matrix
Simulation volume leetcode [general] 1091 The shortest path in binary matrix
2022-07-06 06:17:00 【Encounter simulation volume】
1091. Shortest path in binary matrix
To give you one n x n The binary matrix of grid in , Returns the shortest in the matrix Clear path The length of . If there is no such path , return -1 .
In a binary matrix Clear path It's a road from top left corner Cell ( namely ,(0, 0)) To The lower right corner Cell ( namely ,(n - 1, n - 1)) The path of , The path also meets the following requirements :
The value of all cells in the path is 0 .
All adjacent cells in the path should be in 8 One of the directions Upper connection ( namely , Two adjacent cells are different from each other and share an edge or corner ).
The length of the unblocked path Is the total number of cells that the path passes through .
Example 1:
Input :grid = [[0,1],[1,0]]
Output :2
Example 2:
Input :grid = [[0,0,0],[1,1,0],[1,1,0]]
Output :4
Example 3:
Input :grid = [[1,0,0],[1,1,0],[1,1,0]]
Output :-1
Tips :
n == grid.length
n == grid[i].length
1 <= n <= 100
grid[i][j] by 0 or 1
source : Power button (LeetCode)
link :https://leetcode-cn.com/problems/shortest-path-in-binary-matrix
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Code :
from leetcode_python.utils import *
class Solution:
def __init__(self):
pass
@lru_cache(None)
def next(self,rowid,colid):
res = []
for row_id, col_id in ((rowid - 1, colid), (rowid, colid - 1), (rowid + 1, colid), (rowid, colid + 1),
(rowid - 1, colid-1), (rowid+1, colid - 1), (rowid + 1, colid+1), (rowid-1, colid + 1)):
if 0 <= row_id < self.height and 0 <= col_id < self.width and 0==self.grid[row_id][col_id]:
res.append([row_id, col_id])
return res
def shortestPathBinaryMatrix(self, grid: List[List[int]]) -> int:
if grid[0][0] or grid[-1][-1]:return -1
self.height = self.width = length = len(grid)
self.grid = grid
vis = set()
step = 1
now = [(0,0)]
while now:
next = []
for i,j in now:
if i==j==length-1:
return step
for x,y in self.next(i,j):
if (x,y) not in vis:
vis.add((x,y))
next.append((x,y))
step+=1
now=next
return -1
def test(data_test):
s = Solution()
data = data_test # normal
# data = [list2node(data_test[0])] # list turn node
return s.shortestPathBinaryMatrix(*data)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[[[0,0,0],[1,1,0],[1,1,0]]],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
remarks :
GitHub:https://github.com/monijuan/leetcode_python
CSDN Summary : Simulation volume Leetcode Summary of questions _ Paper blog -CSDN Blog
You can add QQ Group communication :1092754609
leetcode_python.utils See the description on the summary page for details
First brush questions , Then generated by script blog, If there is any mistake, please leave a message , I see it will be revised ! thank you !
边栏推荐
- LeetCode 739. 每日温度
- G - Supermarket
- Significance of unit testing
- Detailed explanation of P problem, NP problem, NPC problem and NP hard problem
- Aike AI frontier promotion (2.13)
- 把el-tree选中的数组转换为数组对象
- 2022 software testing workflow to know
- 對數據安全的思考(轉載)
- Application of Lie group in gtsam
- 【Postman】Collections配置运行过程
猜你喜欢
Embedded point test of app
JWT-JSON WEB TOKEN
GTSAM中李群的運用
G - Supermarket
Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
Win10 cannot operate (delete, cut) files
把el-tree选中的数组转换为数组对象
Function of activation function
【Postman】Collections-运行配置之导入数据文件
Seven imperceptible truths in software testing
随机推荐
Thoughts on data security (Reprint)
曼哈顿距离和-打印菱形
使用Nacos管理配置
Software test interview questions - Test Type
把el-tree选中的数组转换为数组对象
模拟卷Leetcode【普通】1061. 按字典序排列最小的等效字符串
Basic knowledge of error
[wechat applet] build a development tool environment
通过修改style设置打印页样式
还在为如何编写Web自动化测试用例而烦恼嘛?资深测试工程师手把手教你Selenium 测试用例编写
Construction and integration of Zipkin and sleuth for call chain monitoring
[postman] collections - run the imported data file of the configuration
Aike AI frontier promotion (2.13)
【Postman】Collections-运行配置之导入数据文件
Significance of unit testing
职场进阶指南:大厂人必看书籍推荐
黑猫带你学UFS协议第8篇:UFS初始化详解(Boot Operation)
Reading notes of effective managers
Properties file
模拟卷Leetcode【普通】1314. 矩阵区域和