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

leetcode hot100【LeetCode 62.不同路径】java实现

LeetCode 62.不同路径

题目描述

给定一个 m x n 网格,从左上角到右下角有多少条不同的路径。机器人每次只能向下或者向右移动一步。

示例 1:

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

示例 2:

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

提示:

  • 1 <= m, n <= 100

Java 实现代码

class Solution {
    public int uniquePaths(int m, int n) {
        // 创建一个m行n列二维数组 dp,
        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]; // dp[i][j]表示当前位置的路径数
            }
        }
        return dp[m - 1][n - 1]; // 最终的结果就是 dp[m - 1][n - 1]
    }
}

解题思路

该问题可以使用动态规划来解决。具体思路如下:

  1. 定义状态:dp[i][j] 表示从起点 (0, 0) 到达位置 (i, j) 的不同路径数。

  2. 状态转移:

    • 机器人只能从上方或左方到达当前格子。因此,dp[i][j] 可以由 dp[i-1][j](上方)和 dp[i][j-1](左方)之和得到。
    • 即: [ dp[i][j] = dp[i-1][j] + dp[i][j-1] ]
      其中,dp[i-1][j] 表示从上方来,dp[i][j-1] 表示从左方来。
  3. 边界条件:

    • 如果 i == 0j == 0,意味着机器人只能沿着边界移动,所以这些格子的路径数为 1。
    • 即: [ dp[i][0] = 1 and dp[0][j] = 1 ]
  4. 求解: 最终答案为 dp[m-1][n-1],即到达右下角的不同路径数。

复杂度分析

  • 时间复杂度:O(m * n),需要遍历整个 m x n 的网格。
  • 空间复杂度:O(m * n),需要一个大小为 m x n 的二维数组来存储路径数。

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

相关文章:

  • Redis-08 Redis集群
  • event_base
  • Uni-APP+Vue3+鸿蒙 开发菜鸟流程
  • Gin 框架中的路由
  • Lua资料
  • 【阅读记录-章节1】Build a Large Language Model (From Scratch)
  • SAM_MED 2D 训练完成后boxes_prompt没有生成mask的问题
  • Django token 生成与验证
  • 速盾:CDN服务器和双线服务器哪个更好?
  • 如何在开源鸿蒙OpenHarmony开启SELinux模式?RK3566鸿蒙开发板演示
  • ReactPress vs VuePress vs RectPress
  • 如何将 Anaconda 源切换到国内镜像以提高下载速度:详细教程 ubuntu20.04 Pytorch
  • Springboot基于GIS的旅游信息管理系统
  • wps PPT debug
  • 动手学深度学习10.2. 注意力汇聚:Nadaraya-Watson 核回归-笔记练习(PyTorch)
  • 【118页word下载】新型智慧城市顶层设计方案
  • Node.js 23 发布了!
  • 深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
  • 思科考证多少钱?不同级别思科认证考试费用详解!
  • 6.C操作符详解,深入探索操作符与字符串处理
  • 训练误差or测试误差与特征个数之间的关系--基于R语言实现
  • 性能超越Spark 13.3 倍,比某MPP整体快数十秒 | 多项性能指标数倍于主流开源引擎 | 云器科技发布性能测试报告
  • Java项目实战II基于Java+Spring Boot+MySQL的新闻稿件管理系统(源码+数据库+文档)
  • 使用IDE实现java端远程调试功能
  • HarmonyOs鸿蒙开发实战(16)=>沉浸式效果第一种方案一窗口全屏布局方案
  • 【杂谈】无人机测绘技术知识