LeetCode Python - 63. 不同路径 II

news/2024/10/25 16:27:49/

目录

  • 题目描述
  • 解法
  • 运行结果


题目描述

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

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

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

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

示例 1:

在这里插入图片描述

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

  1. 向右 -> 向右 -> 向下 -> 向下

  2. 向下 -> 向下 -> 向右 -> 向右

示例 2:
在这里插入图片描述

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

提示:

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j] 为 0 或 1

解法

动态规划

我们定义 dp[i][j] 表示到达网格 (i,j) 的路径数。

首先初始化 dp 第一列和第一行的所有值,然后遍历其它行和列,有两种情况:

  • 若 obstacleGrid[i][j]=1,说明路径数为 0,那么 dp[i][j]=0;
  • 若 ¥ obstacleGrid[i][j] = 0,则dp[i][j] = dp[i - 1][j] + dp[i][j - 1]$。

最后返回 dp[m−1][n−1] 即可。

时间复杂度 O(m×n),空间复杂度 O(m×n)。其中 m 和 n 分别是网格的行数和列数。

class Solution(object):def uniquePathsWithObstacles(self, obstacleGrid):""":type obstacleGrid: List[List[int]]:rtype: int"""m, n = len(obstacleGrid), len(obstacleGrid[0])dp = [[0] * n for _ in range(m)]for i in range(m):if obstacleGrid[i][0] == 1:breakdp[i][0] = 1for j in range(n):if obstacleGrid[0][j] == 1:breakdp[0][j] = 1for i in range(1, m):for j in range(1, n):if obstacleGrid[i][j] == 0:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]return dp[-1][-1]

运行结果

在这里插入图片描述


http://www.ppmy.cn/news/1389213.html

相关文章

el-date-picker时间禁用问题

// 选择今天以及今天以后的日期 export const disabledDate (time) > {return time.getTime() > Date.now() - 8.64e6; //如果没有后面的-8.64e6就是不可以选择今天的 }设置开始时间小于结束时间&#xff08;不能等于&#xff09; export const disabledDate (date) …

牛客网-SQL大厂面试题-2.平均播放进度大于60%的视频类别

题目&#xff1a;平均播放进度大于60%的视频类别 DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录 flask_service —— app.py —— templates —— —— index.html app.py from flask import Flask, request, jsonify, render_template import random import matplotlib.pyplot as plt from io import BytesIO import base64app F…

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备 1、关机顺序 2、开机顺序 (1)、k8s-ha1、k8s-ha2 (2)、master01、master02、master03 (3)、node01、node02 一、集群服务对外提供访问&#xff0c;需要通过Ingress代理发布域名 mast01上传 ingress-nginx.yaml node01、node02 上传 ingress-nginx.tar 、kube-webh…

Java后台生成多个Excel并用Zip打包后(可以将excel文件放置到不同的目录)下载

有时候会遇到需要在后台批量生成Excel并导出的应用场景&#xff0c;为了方便导出下载&#xff0c;通常会采用Zip打包成一个文件然后下载导出的方式实现。 1.导出Excel 之前写过一篇 POI 通用导出Excel(.xls,.xlsx)&#xff0c; 所以此处不会再重复写导出Excel的方法&#xff…

机器学习 - 线性问题

矩阵做 transpose import torch tensor_Matrix_A torch.tensor([[1,2],[4,5],[7,8] ], dtypetorch.float32) print(tensor_Matrix_A.T)# 结果 tensor([[1., 4., 7.],[2., 5., 8.]])torch.nn.Linear() 模块也被称为 “feed-forward layer"或者"fully connected laye…

谷歌发布Bard AI以与ChatGPT/GPT-4竞争

Google发布Bard AI&#xff0c;与ChatGPT/GPT-4竞争 概述 谷歌近日推出了一款名为Bard的创新型AI聊天机器人&#xff0c;旨在与OpenAI的ChatGPT和微软的Bing Chat竞争。与同类产品不同&#xff0c;Bard能够直接从其模型中生成信息&#xff0c;而不是检索搜索结果。Bard被视为…