当前位置:网站首页>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 !
边栏推荐
- How to extract login cookies when JMeter performs interface testing
- Function of activation function
- Understanding of processes and threads
- Manage configuration using Nacos
- Detailed explanation of P problem, NP problem, NPC problem and NP hard problem
- Web界面元素的测试
- 黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
- MySQL之基础知识
- 多线程应用的测试与调试
- Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai
猜你喜欢
LeetCode 731. 我的日程安排表 II
Sqlmap tutorial (III) practical skills II
Seven imperceptible truths in software testing
数学三大核心领域概述:代数
Redis 核心技术与实战之 基本架构:一个键值数据库包含什么?
进程和线程的理解
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
使用Nacos管理配置
Database - current read and snapshot read
10m25dcf484c8g (FPGA) amy-6m-0002 BGA GPS module
随机推荐
Application of Lie group in gtsam
Online and offline problems
浅谈专项测试之弱网络测试
通过修改style设置打印页样式
MySQL之基础知识
An article was uncovered to test the truth of outsourcing companies
模拟卷Leetcode【普通】1219. 黄金矿工
模拟卷Leetcode【普通】1447. 最简分数
【C语言】字符串左旋
10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
MFC 动态创建的对话框及改变控件的大小和位置
模拟卷Leetcode【普通】1109. 航班预订统计
[postman] collections configuration running process
模拟卷Leetcode【普通】1218. 最长定差子序列
How to extract login cookies when JMeter performs interface testing
selenium源码通读·9 |DesiredCapabilities类分析
Software test interview questions - Test Type
模拟卷Leetcode【普通】1061. 按字典序排列最小的等效字符串
Seven imperceptible truths in software testing
【Postman】Monitors 监测API可定时周期运行