LeetCode —— 980. 不同路径 III(Python)
在二维网格 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)相关推荐
- LeetCode 980. 不同路径 III(DFS+回溯)
1. 题目 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格.且只有一个起始方格. 2 表示结束方格,且只有一个结束方格. 0 表示我们可以走过的空方格. -1 表示我们无法跨越的障 ...
- 980. 不同路径 III
在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格.且只有一个起始方格. 2 表示结束方格,且只有一个结束方格. 0 表示我们可以走过的空方格. -1 表示我们无法跨越的障碍. 返回在 ...
- 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 问题,经典又熟悉. 暴力递归->傻 ...
- LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...
- python工业自动化镜头_ELVIS III + Python | 如何用Python对ELVIS III进行编程开发
通过本文,你将学习如何在NI ELVIS III上安装和使用Python:连接到NI ELVIS III,安装包和库,下载存储库,运行Python代码. 1 - 软件环境搭建 配置ELVIS III设 ...
- LeetCode 字符串简单部分 算法 python实现
''' #2018-06-02 June Saturday the 22 week, the 153 day SZ LeetCode 字符串简单部分 算法 python实现 https://leetc ...
- 【?异或】LeetCode 260. Single Number III
LeetCode 260. Single Number III Solution1: 博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html 这道题 ...
- LeetCode.M62.不同路径
LeetCode.M62.不同路径 题目: 题目大意: 给定一个 m * n 的方格,从 (0, 0) 走到 (m - 1, n - 1).规定只能**向下.向右 ** 数据范围: 1 <= ...
最新文章
- OpenGL如何处理多个纹理
- 吴军 --《硅谷之谜》读书笔记
- 差分霍尔器件测量电路
- java string 返回匹配正则的字符串的起始位置_Python小课堂正则表达式
- JZOJ 5434. 【NOIP2017提高A组集训10.30】Matrix
- Java实现二分查找及其优化
- sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com
- 典型用户信息管理系统
- linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)
- SQL Server 中 GO 的用法
- ASP.net 连接interbase数据库
- CMake 简单入门
- 学会这招,轻松实现批量PDF转jpg,快来码住
- Maxwell个人初学经验及资料分享
- 互动拍照 — AR拍照
- vue2.x 如何更换网页logo
- 签张回执单 保险合同就生效?
- 软件测试人才培养全景图新版本
- uni-app微信公众号(4)——地址管理页面
- AUI 滚动视图使用
热门文章
- 在Docker上部署NGINX和NGINX Plus
- Hystrix面试 - Hystrix 隔离策略细粒度控制
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
- SDN——转控分离、CPU保护机制——COPP技术案列详解及配置命令、
- C语言,期末复习之穷举法鸡兔同笼问题
- 厦门大学c语言模拟考试题,厦门大学《C语言》模拟试卷(10级).doc
- Typecho博客转移服务器,数据备份
- 了解常见的网络架构图
- mysql数据库information_schema库中的表说明
- arkit unity_凯蒂猫! 如何使用ARKit和Unity制作增强现实应用程序。