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

LeetCode:63. 不同路径 II(DP Java)

目录

63. 不同路径 II

题目描述:

实现代码与解析:

动态规划

原理思路:


63. 不同路径 II

题目描述:

        给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109

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

实现代码与解析:

动态规划

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        
        if (obstacleGrid[0][0] == 1) return 0;
        int n = obstacleGrid.length;
        int m = obstacleGrid[0].length;
        int[][] f = new int[n][m];
        f[0][0] = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                
                if (obstacleGrid[i][j] == 1) continue;
                if (i > 0) {
                    f[i][j] += f[i - 1][j];
                }
                if (j > 0) {
                    f[i][j] += f[i][j - 1];
                }
            }
        }
        return f[n - 1][m - 1];
    }
}

原理思路:

        简答题,dp,每格只能从上和左过来,所以直接遍历,f[i][j]表示到达i,j格子的路径个数。


http://www.kler.cn/a/538106.html

相关文章:

  • 网络工程师 (26)TCP/IP体系结构
  • 【Python】元组
  • 网络防御高级02-综合实验
  • 五十天精通硬件设计第20天-CAN协议及电路设计介绍
  • Android studio 创建aar包给Unity使用
  • 网络HTTP详细讲解
  • 腾讯云TI平台×DeepSeek:开启AI超强体验,解锁部署秘籍
  • Linux iftop 命令使用详解
  • 机器学习数学基础:20.方程组解的结构
  • React受控组件的核心原理与实战精要
  • 从0到1深入大数据治理:解锁数据价值的密码
  • Spring Boot 3.4 中 MockMvcTester 的新特性解析
  • 【对比测评】 .NET 应用的 Web 视图控件:DotNetBrowser 或 EO.WebBrowser
  • python实现物体轮廓提取及标注【含源码方案及演示】
  • 尚硅谷课程【笔记】——大数据之Zookeeper【二】
  • Java算法技术文章:深入解析排序、搜索与数据结构
  • mojo语言适合开发机器人控制系统么?
  • Java高级-反射动态代理
  • 网络安全视角:从地域到账号的阿里云日志审计实践
  • Spring Test 的作用与优势
  • 低代码开发是传统开发的替代,还是补充?
  • TypeScript 中的接口:定义对象的形状
  • C++ 顺序表练习
  • 滴水逆向_程序实现弹窗修改OEP
  • LeetCode 106.从中序与后序遍历序列构造二叉树
  • 团餐订餐系统源码企业订餐小程序写字楼办公区团餐软件开发