1926. Nearest Exit from Entrance in Maze刷题笔记
问题描述
使用洪水漫灌算法即可
import collections
class Solution:def nearestExit(self, maze, entrance):directions = [(-1,0),(1,0),(0,-1),(0,1)]m = len(maze)n = len(maze[0])to_check = collections.deque([entrance])maze[entrance[0]][entrance[1]]="+"temp_q = collections.deque()path = 0success = 0while to_check and not success:path+=1while to_check and not success:x,y = to_check.popleft()for dx,dy in directions:nx = x+dxny = y+dyif 0<=nx<m and 0<=ny<n and maze[nx][ny]==".":if nx==0 or nx==m-1 or ny==0 or ny==n-1:success=1breakelse:maze[nx][ny]="+"temp_q.append([nx,ny])to_check = temp_qtemp_q = collections.deque()if success:return pathelse:return -1maze = [["+",".","+","+","+","+","+"],["+",".","+",".",".",".","+"],["+",".","+",".","+",".","+"],["+",".",".",".","+",".","+"],["+","+","+","+","+","+","."]]
entrance = [0, 1]print(Solution().nearestExit(maze,entrance))
运行结果:
参考这篇博客
学到了以下:
- dirs = [0, 1, 0, -1, 0],y是x的索引+1对应的值
- 第二层循环使用len,可以避免temp_q的使用
代码如下
directions = [0,-1,0,1,0]m = len(maze)n = len(maze[0])to_check = collections.deque([entrance])maze[entrance[0]][entrance[1]]="+"path = 0while to_check:path+=1for _ in range(len(to_check)):x,y = to_check.popleft()for j in range(4):nx = x+directions[j]ny = y+directions[j+1]if 0<=nx<m and 0<=ny<n and maze[nx][ny]==".":if nx==0 or nx==m-1 or ny==0 or ny==n-1:return pathelse:maze[nx][ny]="+"to_check.append([nx,ny])return -1
运行结果
1926. Nearest Exit from Entrance in Maze刷题笔记相关推荐
- 生物信息学算法之Python实现|Rosalind刷题笔记:002 中心法则:转录
我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...
- 生物信息学算法之Python实现|Rosalind刷题笔记:003 中心法则:翻译
我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...
- 深度优先搜索dfs算法刷题笔记【蓝桥杯】
其实网上已经有不少dfs的算法笔记,但我之所以还再写一篇,主要是因为我目前见到的笔记,都有些太偏向理论了. 对于基础薄弱的或是没有基础的人(like me),有点不合适,因为看了,也不能说自己会了. ...
- Github最强算法刷题笔记.pdf
资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...
- 我收藏的谷歌和阿里大佬的刷题笔记
金三银四大家在准备校招.社招,或者闲暇的时候,都可以刷刷 Leetcode,保持良好的手感. 之前刷题,一直觉得漫无目的地刷,效率很低.后来发现了两个刷题笔记,谷歌大佬高畅和BAT大佬霜神写的 Lee ...
- 三级网络技术刷题笔记
三级网络技术刷题笔记 RPR与FDDI一样使用双环结构 在RPR环中,源节点向目的节点成功发出的数据帧要由目的节点从环中收回 RPR中每个节点都执行SRP公平算法 RPR环能够在50ms内实现自愈 O ...
- 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...
- 发现一位大佬的算法刷题笔记PDF
昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...
- 阿里大神的刷题笔记.pdf
今天在浏览 Github 的时候,发现了一个让人眼前一亮的项目,一本厚厚的算法刷题笔记,来自一位阿里的资深技术大神. 作者在大学期间参加过三年的 ACM 比赛,对算法有着较为透彻的了解,在找工作之前, ...
- 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开
有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...
最新文章
- CSAPP:第三章程序的机器级表示1
- tsc244标签编辑软件_能打小票的标签机,M110智能标签打印机来了!
- Cloud一分钟 | 马云发表致股东的公开信;5G算什么?中国已着手研究6G相关工作...
- 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池
- linux 内核4.12,Linux Kernel 4.12 发布,最新的稳定版内核
- MyCat 数据库分片极简体验
- 浅谈localStorage、sessionStorage 与cookie
- 记录——《C Primer Plus (第五版)》第八章编程练习第五题
- 团队冲刺第一阶段第九天
- 单幅RGB图像+Depth深度图得到点云模型示例
- 自定义view局部刷新_View
- halcon 深度学习标注_Halcon18--深度学习应用问题记录
- 华为储存服务器许可证,华为存储配件,华为维保服务,华为服务器
- 域名转入需要经过“命名审核”状态
- python 写入Excel
- 如何处理Git中没有小绿勾的问题
- 如何通过电脑cmd查看android设备日志
- 如何撰写国内外研究现状
- 中国农业科学院培训中心职业技能等级证书及培训证书
- CTreeCtrl的HitTest用法
热门文章
- 第十人理论 - 大前研一 - 专业主义
- 对云桌面、桌面云、私有云的一些看法
- 贴片物料/电容/电阻的英制与公制封装
- ValueError: operands could not be broadcast together with shapes (416,416,4) (3,)
- 邮箱如何开启pop3 smtp服务器,QQ邮箱开启POP3、SMTP方法
- 中继器、集线器、网桥、交换机、路由器
- wps文档忘记保存关闭了怎么恢复
- 查看自己电脑连接过的WiFi密码
- 中学生科技节活动计算机,2018年学校科技节活动
- 你真的了解VRP操作系统吗?华为网络设备的文件系统、设备基础管理、命令行基础一次学会