首页 > 编程语言 >代码随想录算法训练营第三十七天 | 62.不同路径 ,63. 不同路径 II

代码随想录算法训练营第三十七天 | 62.不同路径 ,63. 不同路径 II

时间:2024-03-07 14:26:18浏览次数:31  
标签:obstacleGrid 示例 int 路径 随想录 ++ 第三十七 dp

63. 不同路径 II

  已解答 中等  

相关标签

相关企业  

提示

 

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

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

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

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

 

示例 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

func uniquePathsWithObstacles(obstacleGrid [][]int) int { //1.dp[i][j] = i-1,j-1的点 不同的路径数 //2. 递推公式, dp[i][j] = if(grid[i][j] == 1) 0 , or dp[i][j] = dp[i-1][j] + dp[i][j-1] //3. 初始化,dp[0][j] = 1 if cost == 1 == 0, dp[i][0] = 1 if cost = 1 = 0 //4. 从上到下,从左到右 //5. 输出dp m, n := len(obstacleGrid), len(obstacleGrid[0]) var dp [][]int dp = make([][]int, m) for i := 0; i < len(dp); i++ { dp[i] = make([]int, n) } for i := 0; i < m; i++ { if obstacleGrid[i][0] == 1 { break } dp[i][0] = 1 } for i := 0; i < n; i++ { if obstacleGrid[0][i] == 1 { break } dp[0][i] = 1 } for i := 1; i < m; i++ { for j := 1; j < n; j++ { if obstacleGrid[i][j] == 1 { continue } dp[i][j] = dp[i-1][j] + dp[i][j-1] } } return dp[m-1][n-1]

62. 不同路径

  已解答 中等  

相关标签

相关企业  

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

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

问总共有多少条不同的路径?

 

示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

 

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 109

 


func uniquePaths(m int, n int) int { // 1。 确定dp[i][j] 的含义 , 到 i-1,j-1 位置的不同路径 // 2. 递归公式, dp[i][j]= dp[i-1][j] + dp[i][j-1] // 3. 初始化, dp[0][n] = 1 dp[n][0] = 1 // 4. 从1,1开始遍历,至少i,j, 上到下左到右, // 5. 输出dp[i][j] vardp [][]int dp = make([][]int, m) fori := 0; i < len(dp); i++ { dp[i] = make([]int, n) } fori := 0; i < m; i++ { dp[i][0] = 1 } fori := 0; i < n; i++ { dp[0][i] = 1 } fori := 1; i < m; i++ { forj := 1; j < n; j++ { dp[i][j] = dp[i-1][j] + dp[i][j-1] } } return dp[m-1][n-1] }

标签:obstacleGrid,示例,int,路径,随想录,++,第三十七,dp
From: https://www.cnblogs.com/suxinmian/p/18058791

相关文章

  • 代码随想录算法训练营第二天| 977.有序数组的平方、 209.长度最小的子数组、 59.螺旋
    977.有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/description/publicstaticint[]sortedSquares(int[]nums){intleft=0;intright=nums.length-1;int[]result=newint[nums.length];intwrite=......
  • 杭州银行新核心:架构转型新路径、自主安全新答卷
    ​近几年,以云计算平台、分布式数据库、操作系统、中间件等为代表的国产化技术软件逐渐被广泛应用在从外围改造到核心系统的转型升级中,随着银行核心IT从业者和各类厂商的不断实践和经验积累,国产化的云原生、分布式核心业务系统已经成为未来主要发展趋势。 过去的信息科技体系以......
  • 最短路径算法
    最短路径我们把边具有权重的图称为带权图,权重可以理解为两点间的距离。一个图中任意两点会有多条路径联通,最短路径就是这些路径中最短的一条。负环:环中所有边权之重和小于0的环Floyed算法算法思想如何让两个点(假设a到b)的距离变短,只能引入第三个点k,通过k进行中转即a->k->b,当......
  • 二叉树中的最大路径和
    124.二叉树中的最大路径和二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root......
  • 最短路径问题的Dijastra算法
    求节点间最短路径的Dijastra算法思路概述给定一个权值非负的有向连通图,求某个特定原点(假定节点编号为0)到终点的最短路径权值之和。Dijastra算法采用贪心思想,每次选取最短距离可到达的点确定对应路径权值之和,并用以更新其它邻接点的可到达最短距离直至确定终点或者所有节......
  • 本地快速搭建airflow docker镜像,映射本地路径
    airflow官方文档拉取镜像dockerpullapache/airflow:2.8.2拉取配置文件curl-LfO'https://airflow.apache.org/docs/apache-airflow/2.8.2/docker-compose.yaml'修改刚刚拉取的yaml文件关闭示例dagAIRFLOW__CORE__LOAD_EXAMPLES:'false'映射本地路径volumes:......
  • Python涉及路径相关的知识点
    脚本中的路径信息print('__file__:',__file__)#脚本的位置print('os.path.abspath(__file__)::',__file__)#脚本的绝对路径(和上面的一般情况下是一样的)print('os.path.abspath(__file__):',os.path.abspath(__file__))SCRIPT_DIR=os.path.dirname(os.path.abspat......
  • 代码随想录算法训练营day14 | leetcode 144. 二叉树的前序遍历、145. 二叉树的后序遍
    目录题目链接:144.二叉树的前序遍历-简单题目链接:145.二叉树的后序遍历-简单题目链接:94.二叉树的中序遍历-简单递归三要素:确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归......
  • 代码随想录算法训练营第三十八天| ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯
    理论基础 代码随想录(programmercarl.com)动态规划的五部曲:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组斐波那契数 题目链接:509.斐波那契数-力扣(LeetCode)思路:还好。classSolution{public:intfib(intn)......
  • 代码随想录算法训练营第三十八天 | 746. 使用最小花费爬楼梯,、70. 爬楼梯,509. 斐波那
     509.斐波那契数 已解答简单 相关标签相关企业 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>......