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

Leetcode Unique Path II

题意

给定一个m*n的矩阵,从右上走到右下,记1为blocker无法通行。问有多少条不同的path

题目链接

https://leetcode.com/problems/unique-paths-ii/description/

题解

可以用dp,dp[i]][j]代表对于走到坐标(i, j)有多少条不同的path,注意初始化的时候第0行和第0列,如果有blocker,那么从当前石头开始,当前行或者列都没有

代码

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& a) {
        int m = a.size();
        int n = a[0].size();
        vector<vector<int>> dp(m, vector<int>(n, 0));
        for(int i = 0; i < m; i++) {
            if(a[i][0] == 0) {
                dp[i][0] = 1;
            }
            else {
                break;
            }
        }        
        for(int j = 0; j < n; j++) {
            if(a[0][j] == 0) {
                dp[0][j] = 1;
            } else {
                break;
            }
        }        
        for(int i = 1; i < m; i++) {
            for(int j = 1; j < n; j++) {
                if(a[i][j] == 1) {
                    dp[i][j] = 0;
                    continue;
                }
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};

时间复杂度: O ( m n ) O(mn) O(mn)
空间复杂度: O ( m n ) O(mn) O(mn)


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

相关文章:

  • [JavaWeb]搜索表单区域
  • SpringBoot源码解析(八):Bean工厂接口体系
  • XCTF - IllIntentions wp
  • JVM栈溢出线上环境排查
  • 批量卸载fnm中已经安装的所有版本
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-head.py
  • 【华为OD-E卷 - VLAN资源池 100分(python、java、c++、js、c)】
  • 【Elasticsearch】 Compound Queries
  • 三天急速通关JavaWeb基础知识:Day 1 后端基础知识
  • 你好!这是我自己的CSDN博客!
  • 【B站保姆级视频教程:Jetson配置YOLOv11环境(二)SSH连接的三种方式】
  • 伪装难掩锋芒:新一代奥迪 RS5 Sportback 路测图首曝
  • CARAFE模型详解
  • nodejs:js-mdict 的下载、安装、测试、build
  • 并发编程基础 - 并发编程的概念(C++)
  • 32【post与get】
  • 【go语言】接口
  • Vue3.0教程003:setup语法糖
  • Linux中使用unzip
  • Python3 列表详解
  • 车载软件 --- 大一新生入门汽车零部件嵌入式开发
  • C++11(三)
  • 堆的模拟实现(详解)c++
  • 论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅
  • 使用DeepSeek技巧:提升内容创作效率与质量
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.30 性能巅峰:NumPy代码优化全攻略