leetcode 62.不同的路径
1.题目描述见62.不同的路径2. 解题思路动态规划 (Dynamic Programming)这个问题具有典型的最优子结构和重叠子问题特征非常适合使用动态规划来解决。核心逻辑假设我们要到达网格中的某个位置(row, col)行索引为row列索引为col移动限制机器人只能从上方(row-1, col)或者左方(row, col-1)移动过来。状态转移方程因此到达(row, col)的路径总数等于“到达上方的路径数”加上“到达左方的路径数”。d p [ r o w ] [ c o l ] d p [ r o w − 1 ] [ c o l ] d p [ r o w ] [ c o l − 1 ] dp[row][col] dp[row-1][col] dp[row][col-1]dp[row][col]dp[row−1][col]dp[row][col−1]边界条件第一行对于第一行的所有格子(0, col)机器人只能一直向右走才能到达所以路径数只有1种。第一列对于第一列的所有格子(row, 0)机器人只能一直向下走才能到达所以路径数也只有1种。3. 代码深度解析你提供的代码完美地实现了上述逻辑。以下是逐段解析A. 数据结构初始化// JS 只有“一维数组”多维是通过嵌套实现的// 二维数组的初始化 memo 有 n 行constmemo[];for(leti0;in;i){memo.push([]);}维度说明题目输入是m(列数) 和n(行数)。代码创建了一个n行的二维数组memo。注意在二维数组表示中通常memo[row][col]其中row范围是0到n-1col范围是0到m-1。B. 处理边界条件// 第一列的赋值 (col 0)for(letrow0;rown;row){memo[row][0]1;}// 第一行的赋值 (row 0)for(letcol0;colm;col){memo[0][col]1;}这里分别将第一列和第一行全部初始化为1。逻辑对应无论网格多大只要在第一行或第一列只有一种走法直走。C. 状态转移 (核心循环)for(letrow1;rown;row){for(letcol1;colm;col){// 到达某点的路径总数 该点上头的路径总数 该点左头的路径总数memo[row][col]memo[row-1][col]memo[row][col-1];}}循环起点从row 1和col 1开始因为第 0 行和第 0 列已经初始化过了。递推公式直接应用了d p [ i ] [ j ] d p [ i − 1 ] [ j ] d p [ i ] [ j − 1 ] dp[i][j] dp[i-1][j] dp[i][j-1]dp[i][j]dp[i−1][j]dp[i][j−1]。填充顺序从上到下从左到右。确保在计算当前格子时其上方和左方的值已经计算完毕。D. 返回结果returnmemo[n-1][m-1];返回右下角的值即终点(n-1, m-1)的路径总数。4. 复杂度分析时间复杂度:O ( m × n ) O(m \times n)O(m×n)我们需要遍历整个m × n m \times nm×n的网格一次来填充memo数组。空间复杂度:O ( m × n ) O(m \times n)O(m×n)我们创建了一个大小为m × n m \times nm×n的二维数组来存储中间状态。优化提示其实可以将空间复杂度优化到O ( min ⁡ ( m , n ) ) O(\min(m, n))O(min(m,n))甚至O ( 1 ) O(1)O(1)如果允许修改原数组或使用滚动数组因为计算当前行只需要上一行的数据。但在面试或学习中这种O ( m × n ) O(m \times n)O(m×n)的写法最直观最容易理解动态规划的本质。5. 举例演示 (m3, n2)假设m3(3列),n2(2行)。初始化memo为 2 行空数组。填第一列memo[0][0] 1memo[1][0] 1填第一行memo[0][0] 1(已填)memo[0][1] 1memo[0][2] 1此时网格状态[1, 1, 1] [1, ?, ?]双重循环计算row1, col1:memo[1][1] memo[0][1] memo[1][0] 1 1 2row1, col2:memo[1][2] memo[0][2] memo[1][1] 1 2 3最终网格状态[1, 1, 1] [1, 2, 3]返回memo[1][2]即3。结果正确。6. 总结这段代码是动态规划解决网格路径问题的标准模板。它清晰地展示了如何定义状态二维数组。如何处理边界首行首列。如何推导状态转移方程上 左。对于 JavaScript 开发者来说特别注意二维数组需要手动初始化每一行push([])这与 Java 或 C 等语言直接声明int[n][m]略有不同。7.完整代码/** * param {number} m * param {number} n * return {number} */varuniquePathsfunction(m,n){//JS 只有“一维数组”多维是通过嵌套实现的//二维数组的初始化 memo 有 n行constmemo[];for(leti0;in;i){memo.push([]);}////第一列的赋值for(letrow0;rown;row){memo[row][0]1;}//第一行的赋值for(letcol0;colm;col){memo[0][col]1;}for(letrow1;rown;row){for(letcol1;colm;col){//到达某点的路径总数 该点上头的路径总数 该点左头的路径总数memo[row][col]memo[row-1][col]memo[row][col-1];}}returnmemo[n-1][m-1];};

相关新闻

基于模拟的PFC含纤维混凝土材料单轴压缩破坏研究与分析

基于模拟的PFC含纤维混凝土材料单轴压缩破坏研究与分析

PFC含纤维混凝土材料单轴压缩破坏模拟PFC材料,全称为“含纤维混凝土”,是一种新兴的复合材料,广泛应用于土木工程、建筑工程等领域。它的独特之处在于通过加入纤维增强体,显著提升了材料的抗拉强度和抗冲击性能,同时保…

2026/7/8 0:38:35 阅读更多 →
苹果发布iPhone 17e和搭载M4芯片的新iPad Air

苹果发布iPhone 17e和搭载M4芯片的新iPad Air

苹果承诺本周将推出重磅新品,现在看来确实兑现了承诺。本周首先发布的是iPhone 17e和搭载强大M4芯片的iPad Air。这两款产品都符合发布前的预期,但更令人印象深刻的是,尽管全球内存价格飙升,苹果仍设法让两款新产品的基础售价与前…

2026/7/7 5:21:05 阅读更多 →
1.RCNN,Fast RCNN

1.RCNN,Fast RCNN

目录 1.目标检测算法分类 2.RCNN (1)概念 (2)RCNN算法 正向传播 流程 (3)RCNN框架 (4)RCNN 的问题 2.Fast RCNN (1)简介 (2)…

2026/7/7 1:53:25 阅读更多 →

最新新闻

OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略

OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略

OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略在计算机视觉领域,OpenCV 的 BGR 通道顺序一直是开发者绕不开的话题。当你第一次用 OpenCV 读取图像后尝试用 matplotlib 显示时,那诡异的蓝色调会让你瞬间意识到问题的存在——…

2026/7/8 0:39:03 阅读更多 →
7天从零到精通:SMAPI星露谷物语模组开发完全指南

7天从零到精通:SMAPI星露谷物语模组开发完全指南

7天从零到精通:SMAPI星露谷物语模组开发完全指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 你是否曾想过为星露谷物语添加全新的游戏内容?是否羡慕其他玩家拥有独特的农…

2026/7/8 0:34:55 阅读更多 →
开源DICOM影像分析平台:Weasis如何重塑医学影像工作流程

开源DICOM影像分析平台:Weasis如何重塑医学影像工作流程

开源DICOM影像分析平台:Weasis如何重塑医学影像工作流程 【免费下载链接】Weasis Weasis is a web-based DICOM viewer for advanced medical imaging and seamless PACS integration. 项目地址: https://gitcode.com/gh_mirrors/we/Weasis 在医疗影像诊断领…

2026/7/8 0:30:54 阅读更多 →
DokuWiki:无需数据库的轻量级开源维基引擎,构建高效知识管理平台

DokuWiki:无需数据库的轻量级开源维基引擎,构建高效知识管理平台

DokuWiki:无需数据库的轻量级开源维基引擎,构建高效知识管理平台 【免费下载链接】dokuwiki The DokuWiki Open Source Wiki Engine 项目地址: https://gitcode.com/gh_mirrors/do/dokuwiki DokuWiki是一款无需数据库的开源维基引擎,凭…

2026/7/8 0:30:53 阅读更多 →
星露谷物语模组加载器SMAPI:新手入门完全指南

星露谷物语模组加载器SMAPI:新手入门完全指南

星露谷物语模组加载器SMAPI:新手入门完全指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 想要为《星露谷物语》添加新角色、扩展地图或优化游戏体验吗?SMAPI(…

2026/7/8 0:20:51 阅读更多 →
uBlock Origin完整指南:5分钟打造无广告、高隐私的纯净浏览器体验

uBlock Origin完整指南:5分钟打造无广告、高隐私的纯净浏览器体验

uBlock Origin完整指南:5分钟打造无广告、高隐私的纯净浏览器体验 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 你是否厌倦了网页上无…

2026/7/8 0:20:51 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻