问题描述
使用洪水漫灌算法即可

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))

运行结果:

参考这篇博客
学到了以下:

  1. dirs = [0, 1, 0, -1, 0],y是x的索引+1对应的值
  2. 第二层循环使用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刷题笔记相关推荐

  1. 生物信息学算法之Python实现|Rosalind刷题笔记:002 中心法则:转录

    我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...

  2. 生物信息学算法之Python实现|Rosalind刷题笔记:003 中心法则:翻译

    我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...

  3. 深度优先搜索dfs算法刷题笔记【蓝桥杯】

    其实网上已经有不少dfs的算法笔记,但我之所以还再写一篇,主要是因为我目前见到的笔记,都有些太偏向理论了. 对于基础薄弱的或是没有基础的人(like me),有点不合适,因为看了,也不能说自己会了. ...

  4. Github最强算法刷题笔记.pdf

    资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...

  5. 我收藏的谷歌和阿里大佬的刷题笔记

    金三银四大家在准备校招.社招,或者闲暇的时候,都可以刷刷 Leetcode,保持良好的手感. 之前刷题,一直觉得漫无目的地刷,效率很低.后来发现了两个刷题笔记,谷歌大佬高畅和BAT大佬霜神写的 Lee ...

  6. 三级网络技术刷题笔记

    三级网络技术刷题笔记 RPR与FDDI一样使用双环结构 在RPR环中,源节点向目的节点成功发出的数据帧要由目的节点从环中收回 RPR中每个节点都执行SRP公平算法 RPR环能够在50ms内实现自愈 O ...

  7. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  8. 发现一位大佬的算法刷题笔记PDF

    昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...

  9. 阿里大神的刷题笔记.pdf

    今天在浏览 Github 的时候,发现了一个让人眼前一亮的项目,一本厚厚的算法刷题笔记,来自一位阿里的资深技术大神. 作者在大学期间参加过三年的 ACM 比赛,对算法有着较为透彻的了解,在找工作之前, ...

  10. 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开

    有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...

最新文章

  1. CSAPP:第三章程序的机器级表示1
  2. tsc244标签编辑软件_能打小票的标签机,M110智能标签打印机来了!
  3. Cloud一分钟 | 马云发表致股东的公开信;5G算什么?中国已着手研究6G相关工作...
  4. 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池
  5. linux 内核4.12,Linux Kernel 4.12 发布,最新的稳定版内核
  6. MyCat 数据库分片极简体验
  7. 浅谈localStorage、sessionStorage 与cookie
  8. 记录——《C Primer Plus (第五版)》第八章编程练习第五题
  9. 团队冲刺第一阶段第九天
  10. 单幅RGB图像+Depth深度图得到点云模型示例
  11. 自定义view局部刷新_View
  12. halcon 深度学习标注_Halcon18--深度学习应用问题记录
  13. 华为储存服务器许可证,华为存储配件,华为维保服务,华为服务器
  14. 域名转入需要经过“命名审核”状态
  15. python 写入Excel
  16. 如何处理Git中没有小绿勾的问题
  17. 如何通过电脑cmd查看android设备日志
  18. 如何撰写国内外研究现状
  19. 中国农业科学院培训中心职业技能等级证书及培训证书
  20. CTreeCtrl的HitTest用法

热门文章

  1. 第十人理论 - 大前研一 - 专业主义
  2. 对云桌面、桌面云、私有云的一些看法
  3. 贴片物料/电容/电阻的英制与公制封装
  4. ValueError: operands could not be broadcast together with shapes (416,416,4) (3,)
  5. 邮箱如何开启pop3 smtp服务器,QQ邮箱开启POP3、SMTP方法
  6. 中继器、集线器、网桥、交换机、路由器
  7. wps文档忘记保存关闭了怎么恢复
  8. 查看自己电脑连接过的WiFi密码
  9. 中学生科技节活动计算机,2018年学校科技节活动
  10. 你真的了解VRP操作系统吗?华为网络设备的文件系统、设备基础管理、命令行基础一次学会