代码随想录——不同路径Ⅱ(Leetcode 63)

题目链接

动态规划

java 复制代码
class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        int[][] dp = new int[m][n];
        // 遇到障碍则从(0,0)到达
        for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++){
            dp[i][0] = 1;
        }
        for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++){
            dp[0][j] = 1;
        }
        for(int i = 1; i < m; i++){
            for(int j = 1; j < n; j++){
            	// 如果没有障碍则dp公式正确执行
                if(obstacleGrid[i][j] == 0){
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            }
        }
        return dp[m - 1][n - 1];
    }
}

本题目是上一篇博客不同路径这道题目的升级版,整体动态规划思路相同,本题多了障碍这一条件约束。

相关推荐
Query*几秒前
Java 设计模式——适配器模式进阶:原理深挖、框架应用与实战扩展
java·设计模式·适配器模式
PyHaVolask2 分钟前
数据结构与算法分析
数据结构·算法·图论
小王C语言2 分钟前
封装红黑树实现mymap和myset
linux·服务器·算法
Sirens.10 分钟前
Java核心概念:抽象类、接口、Object类深度剖析
java·开发语言·github
Meteors.10 分钟前
23种设计模式——中介者模式 (Mediator Pattern)详解
java·设计模式·中介者模式
幸运小圣10 分钟前
Set数据结构【ES6】
javascript·数据结构·es6
望获linux12 分钟前
【实时Linux实战系列】使用 u-trace 或 a-trace 进行用户态应用剖析
java·linux·前端·网络·数据库·elasticsearch·操作系统
焰火199919 分钟前
[Java]基于Spring的轻量级定时任务动态管理框架
java·后端
大佬,救命!!!21 分钟前
算法实现迭代2_堆排序
数据结构·python·算法·学习笔记·堆排序
Seven9727 分钟前
Springboot 常见面试题汇总
java·spring boot