当前位置: 首页 > news >正文

力扣:63. 不同路径 II(Python3)

题目:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

 

输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。 从左上角到右下角一共有 2 条不同的路径: 1. 向右 -> 向右 -> 向下 -> 向下 2. 向下 -> 向下 -> 向右 -> 向右


示例 2:

 

输入:obstacleGrid = [[0,1],[0,0]]
输出:1

解法:

创建m*n的表格,m是obstacleGrid的行数,n是obstacleGrid的列数。表格第1行、列初始化为1,如果第1行、列有障碍,那么从此位置开始及后面的所有位置都置为0,表示此路不通,其它位置初始化为-1。

然后遍历表格右下角区域(去除第1行、列),每个位置更新为上面和左边的和,障碍不更新,最后返回右下角值。

代码:

class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:m = len(obstacleGrid)n = len(obstacleGrid[0])f = [[1] * n] + [[1] + [-1] * (n - 1) for _ in range(m - 1)]flag1 = flag2 = 0for index1, r in enumerate(obstacleGrid):for index2, c in enumerate(r):if index1 == 0:if flag1 == 1:f[index1][index2] = 0elif c == 1:flag1 = 1f[index1][index2] = 0flag2 = 1 if index2 == 0 else flag2else:if index2 == 0:if flag2 == 1:f[index1][index2] = 0elif c == 1:flag2 = 1f[index1][index2] = 0else:if c == 1:f[index1][index2] = 0for i in range(1, m):for j in range(1, n):if f[i][j] != 0:f[i][j] = f[i - 1][j] + f[i][j - 1]return f[m - 1][n - 1]

http://www.lryc.cn/news/126161.html

相关文章:

  • 【C语言】每日一题(多数元素)
  • 后端 .net7 Minimal API 限流中间件(微信小程序无师自通十)
  • 背上沉重的书包准备面试之react篇
  • OpenCV-Python中的图像处理-霍夫变换
  • W5500-EVB-PICO做UDP Client进行数据回环测试(八)
  • npm install 中 --save 和 --save-dev 是什么?
  • 【Nginx17】Nginx学习:目录索引、字符集与浏览器判断模块
  • CA/TA开发编程实战-视频课程
  • (7)(7.1) 使用航点和事件规划任务
  • OCR相关模块——版面分析技术、表格文本识别
  • mov转mp4格式怎么转?
  • SSL握手协议相关概念
  • idea 打开java项目后新建的模块中,java文件夹需要变成蓝色,以及resources文件夹变成三条杠的
  • 【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解
  • 滑模控制器理论推导和matlab/simulink实例分享
  • git 操作
  • 自建hexo博客并将原有的文章发布其上
  • 【双指针_和为 s 的两个数_C++】
  • HTML5的介绍和基本框架
  • 代码随想录算法训练营第58天|动态规划part15|392.判断子序列、115.不同的子序列
  • 日常BUG——普通页面跳转tabbar页面报错
  • SpringBoot复习:(48)RedisAutoConfiguration自动配置类
  • 软硬件免费,服务收费:网络安全商业模式正在被颠覆
  • 变形金刚:从零开始【01/2】
  • Opencv特征检测之ORB算法原理及应用详解
  • 【es6】函数柯里化(Currying)
  • 线上多域名实战
  • 【C语言】上手实验
  • 设计HTML5表单
  • 使用Kaptcha生成验证码