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

JAVA练习354- 不同路径

题目概览

一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

输入:m = 3, n = 7输出:28

示例 2:

输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向下 -> 向下 2. 向下 -> 向下 -> 向右 3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3输出:28

示例 4:

输入:m = 3, n = 3输出:6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于2 * 10^9

来源:62. 不同路径 - 力扣(LeetCode)

解题分析

方法一:动态规划

当前位置只能从上面或左边走过来,因此可以得到状态转移方程:

dp[ i ] [ j ] = dp [ i - 1 ] [ j ] + dp [ i ] [ j - 1 ]

第一行和第一列只有一条路径,所以初始化为 1。

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

class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][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]; } }

方法二:动态规划优化

由于我们只关注上一行和上一列的路径数,因此我们可以将二维dp优化为一维,只存储上一行的路径数,每次遍历将当前列位置数更新为新一行的数据,获取前一列的数据就为 dp[ j - 1]

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

class Solution { public int uniquePaths(int m, int n) { int[] dp = new int[n]; for (int j = 0; j < n; ++j) { dp[j] = 1; } for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { dp[j] += dp[j-1]; } } return dp[n-1]; } }
http://www.cnnetsun.cn/news/3646461.html

相关文章:

  • Dify与DeepSeek构建私有知识库:从零部署到生产实践指南
  • MySQL 8.0 保姆级安装配置教程:从零搭建开发环境到安全实践
  • 从Rhino到Blender:解密3DM文件导入器的核心技术架构
  • 利用多模型能力为ai应用设计分级响应与降级策略
  • 使用Taotoken的TokenPlan套餐后月度账单支出的变化与分析
  • 从国际音标到语音合成:浏览器端音标转语音终极指南
  • 2024-2025 AI Agent开发实战:从核心概念到工程化部署完整指南
  • 对比官方价Taotoken的Token Plan套餐究竟能省多少
  • WorkshopDL:无需Steam账号也能下载创意工坊模组的终极指南
  • 深入解析EDMA核心机制:参数集动态更新、链接传输与触发机制
  • Steam游戏自动破解终极指南:3步实现游戏完全离线运行
  • 如何在30分钟内打造专属精简版Windows 11:tiny11builder完整指南
  • Instatic:一体化自托管CMS架构设计与部署实践
  • CI 供应链被投毒后,我用 Sigstore + SLSA 给镜像签了一次名就再没睡不踏实
  • 家具渲染色彩管理:解决预览与保存不一致的完整方案
  • AMD Ryzen SMU调试工具架构解析:系统管理单元深度控制与性能调优技术实现
  • NoFences:免费开源Windows桌面分区工具,3分钟创建整洁工作空间
  • 英雄联盟Akari助手:3分钟快速安装的免费开源游戏效率工具
  • 创业团队如何利用Taotoken实现API密钥的权限管理与访问审计
  • AI守望者:人类灭绝后的机器文明延续
  • 初创团队如何利用 Taotoken 实现大模型成本精细化管理
  • 实战指南:如何用Python自动化破解大众点评动态字体加密,构建稳定数据采集系统
  • PHP 如何利用 Opcache 来实现保护源码
  • 观察Taotoken用量看板如何清晰展示各模型Token消耗
  • Claude Code API实战:从配置到优化的全流程指南
  • 2026年最值得入手的果蔬清洗机,这些实用机构推荐请查收!
  • AI短剧全流程生产与文创开发系统架构解析
  • OpenMontage:用AI编程助手打造全栈视频制作系统
  • 多任务学习框架:低成本解决多模态性别歧视检测与标注分歧
  • 本地化GEO优化技术拆解:为什么第三方SaaS贴牌工具无法打赢合肥同城AI流量?