LeetCode 62. 不同路径

embedded/2025/1/22 23:38:13/

问题描述

LeetCode 62题“不同路径”是一个经典的动态规划问题。题目要求计算一个机器人在一个 m x n 的网格中,从左上角(Start)到达右下角(Finish)的不同路径数量。机器人每次只能向下或向右移动一步。

算法分析

动态规划

动态规划是解决这类问题的有效方法。我们可以定义一个 dp 数组,其中 dp[i][j] 表示到达位置 (i, j) 的不同路径数量。

状态转移方程

对于每个位置 (i, j),机器人可以从左边 (i, j-1) 或上面 (i-1, j) 到达。因此,状态转移方程为: dp[i][j]=dp[i−1][j]+dp[i][j−1]

初始化

  • 第一行和第一列的每个位置只能从一个方向到达,因此 dp[0][j] = 1dp[i][0] = 1

代码实现

以下是使用C++实现的代码:

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n));for (int i = 0; i < m; ++i) {dp[i][0] = 1;}for (int j = 0; j < n; ++j) {dp[0][j] = 1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
};

时间复杂度

时间复杂度为 O(m×n),因为我们需要计算 dp 数组中的每个元素。

空间复杂度

空间复杂度为 O(m×n),因为我们需要存储 dp 数组。

总结

通过动态规划,我们可以有效地计算出机器人在网格中从左上角到右下角的不同路径数量。这种方法利用了状态转移方程和边界条件,避免了重复计算,提高了算法的效率。


http://www.ppmy.cn/embedded/156182.html

相关文章

centos部署rabbitmq

要安装rabbitmq首先要安装erlang 二者对应的版本如下&#xff0c;具体查看地址 https://www.rabbitmq.com/docs/next/which-erlang[这里是图片001]https://www.rabbitmq.com/docs/next/which-erlang 一、安装erlang 1.1安装必要的依赖项&#xff1a; Erlang的编译过程需要一…

缓存之美:万文详解 Caffeine 实现原理(上)

由于社区最大字数限制&#xff0c;本文章将分为两篇&#xff0c;第二篇文章为缓存之美&#xff1a;万文详解 Caffeine 实现原理&#xff08;下&#xff09; 大家好&#xff0c;我是 方圆。文章将采用“总-分-总”的结构对配置固定大小元素驱逐策略的 Caffeine 缓存进行介绍&…

python——句柄

一、概念 句柄指的是操作系统为了标识和访问对象而提供的一个标识符&#xff0c;在操作系统中&#xff0c;每个对象都有一个唯一的句柄&#xff0c;通过句柄可以访问对象的属性和方法。例如文件、进程、窗口等都有句柄。在编程中&#xff0c;可以通过句柄来操作这些对象&#x…

当使用 npm 时,出现 `certificate has expired` 错误通常意味着请求的证书已过期。

当使用 npm 时&#xff0c;出现 certificate has expired 错误通常意味着请求的证书已过期。这可能是由于以下几种情况&#xff1a; 网络代理问题&#xff1a;如果使用了网络代理&#xff0c;代理服务器的证书可能过期或配置有误。系统时间错误&#xff1a;系统时间不准确可能导…

系统架构设计师-第2章-操作系统

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考4分左右&#xff0c;对应第二版教材2.3.2小节&#xff0c;仅有基本概念&#xff0c;需要额外补充知识。根据历年真题考试情况&#xff0c;五大管理仍是重点。 2.1 操作系统概述 …

电脑办公技巧之如何在 Word 文档中添加文字或图片水印

Microsoft Word是全球最广泛使用的文字处理软件之一&#xff0c;它为用户提供了丰富的编辑功能来美化和保护文档。其中&#xff0c;“水印”是一种特别有用的功能&#xff0c;它可以用于标识文档状态&#xff08;如“草稿”或“机密”&#xff09;、公司标志或是版权信息等。本…

Kotlin基础知识学习(三)

函数使用 基本用法 函数声明变化 如果函数是公开的&#xff0c;则public关键字可以省略。用fun关键字表示函数的定义。如果函数没有返回值可以不用声明。如果函数表示重载&#xff0c;直接在fun同一行用override修饰。函数参数格式是变量名&#xff1a;变量类型。函数参数允…

ubuntu20.04有亮度调节条但是调节时亮度不变

尝试了修改grub文件&#xff0c;没有作用&#xff0c;下载了brightness-controllor&#xff0c;问题解决了。 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller 之后在应用软件中找到brightness-contro…