在二维网格 grid 上,有 4 种类型的方格:

  • 1 表示起始方格。且只有一个起始方格。
  • 2 表示结束方格,且只有一个结束方格。
  • 0 表示我们可以走过的空方格。
  • -1 表示我们无法跨越的障碍。
    返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目。

每一个无障碍方格都要通过一次,但是一条路径中不能重复通过同一个方格。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:def uniquePathsIII(self, grid):R, C = len(grid), len(grid[0])  # 计算行数和列数def neighbors(r, c):for nr, nc in ((r-1, c), (r, c-1), (r+1, c), (r, c+1)):if 0 <= nr < R and 0 <= nc < C and grid[nr][nc] % 2 == 0:  # 返回可以到达的位置yield nr, nctodo = 0for r, row in enumerate(grid):for c, val in enumerate(row):if val != -1: todo += 1  # 统计不是障碍的点数if val == 1:   # 起始位置sr, sc = r, cif val == 2:   # 结束位置tr, tc = r, cself.ans = 0def dfs(r, c, todo):todo -= 1  # 遍历到一个位置,将当前位置变为-1if todo < 0: returnif r == tr and c == tc:  # 当到达目标位置同时todo为零if todo == 0:  self.ans += 1returngrid[r][c] = -1for nr, nc in neighbors(r, c):dfs(nr, nc, todo)grid[r][c] = 0  # 回溯dfs(sr, sc, todo)return self.ans

LeetCode —— 980. 不同路径 III(Python)相关推荐

  1. LeetCode 980. 不同路径 III(DFS+回溯)

    1. 题目 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格.且只有一个起始方格. 2 表示结束方格,且只有一个结束方格. 0 表示我们可以走过的空方格. -1 表示我们无法跨越的障 ...

  2. 980. 不同路径 III

    在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格.且只有一个起始方格. 2 表示结束方格,且只有一个结束方格. 0 表示我们可以走过的空方格. -1 表示我们无法跨越的障碍. 返回在 ...

  3. leetcode 62, 63, 980. Unique Paths I, II, III | 62, 63, 980. 不同路径 I, II, III(暴力递归->傻缓存->动态规划)

    62. Unique Paths https://leetcode.com/problems/unique-paths/ 注意本题只能向右 / 向上走. DP 问题,经典又熟悉. 暴力递归->傻 ...

  4. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)

    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...

  5. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

  6. python工业自动化镜头_ELVIS III + Python | 如何用Python对ELVIS III进行编程开发

    通过本文,你将学习如何在NI ELVIS III上安装和使用Python:连接到NI ELVIS III,安装包和库,下载存储库,运行Python代码. 1 - 软件环境搭建 配置ELVIS III设 ...

  7. LeetCode 字符串简单部分 算法 python实现

    ''' #2018-06-02 June Saturday the 22 week, the 153 day SZ LeetCode 字符串简单部分 算法 python实现 https://leetc ...

  8. 【?异或】LeetCode 260. Single Number III

    LeetCode 260. Single Number III Solution1: 博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html 这道题 ...

  9. LeetCode.M62.不同路径

    LeetCode.M62.不同路径 题目: 题目大意: ​ 给定一个 m * n 的方格,从 (0, 0) 走到 (m - 1, n - 1).规定只能**向下.向右 ** 数据范围: 1 <= ...

最新文章

  1. OpenGL如何处理多个纹理
  2. 吴军 --《硅谷之谜》读书笔记
  3. 差分霍尔器件测量电路
  4. java string 返回匹配正则的字符串的起始位置_Python小课堂正则表达式
  5. JZOJ 5434. 【NOIP2017提高A组集训10.30】Matrix
  6. Java实现二分查找及其优化
  7. sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com
  8. 典型用户信息管理系统
  9. linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)
  10. SQL Server 中 GO 的用法
  11. ASP.net 连接interbase数据库
  12. CMake 简单入门
  13. 学会这招,轻松实现批量PDF转jpg,快来码住
  14. Maxwell个人初学经验及资料分享
  15. 互动拍照 — AR拍照
  16. vue2.x 如何更换网页logo
  17. 签张回执单 保险合同就生效?
  18. 软件测试人才培养全景图新版本
  19. uni-app微信公众号(4)——地址管理页面
  20. AUI 滚动视图使用

热门文章

  1. 在Docker上部署NGINX和NGINX Plus
  2. Hystrix面试 - Hystrix 隔离策略细粒度控制
  3. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
  4. SDN——转控分离、CPU保护机制——COPP技术案列详解及配置命令、
  5. C语言,期末复习之穷举法鸡兔同笼问题
  6. 厦门大学c语言模拟考试题,厦门大学《C语言》模拟试卷(10级).doc
  7. Typecho博客转移服务器,数据备份
  8. 了解常见的网络架构图
  9. mysql数据库information_schema库中的表说明
  10. arkit unity_凯蒂猫! 如何使用ARKit和Unity制作增强现实应用程序。