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

【Hot100】LeetCode—62. 不同路径

目录

  • 1- 思路
    • 题目识别
    • 动规五部曲
  • 2- 实现
    • 62. 不同路径——题解思路
  • 3- ACM 实现


  • 原题链接:62. 不同路径

1- 思路

题目识别

  • 识别1 :给一个二维矩阵,每次只能向下或者向右移动一步
  • 识别2:求解到达最右下角的路径数。

动规五部曲

  • 1- 定义 dp 数组,确定含义
    • dp[i][j] 代表到达单元格 [i][j] 的路径数
  • 2- 递推公式
    • 因为只能向下或者向右移动,因此当前位置的方式由两个方向推导而来
    • dp[i][j] = dp[i-1][j] + dp[i][j-1]
  • 3- 初始化
    • 第一行,第一列的方式都是 1
  • 4- 遍历顺序,二维遍历 分别都从 1 开始

2- 实现

62. 不同路径——题解思路

在这里插入图片描述

class Solution {
    public int uniquePaths(int m, int n) {
        // 1. 定义 dp
        int[][] dp = new int[m][n];

        // 2. 递推
        // dp[i][j] = dp[i-1][j] + dp[i][j-1]

        // 3. 初始化
        for(int i = 0 ; i < m ; i++){
            dp[i][0] = 1;
        }
        for(int i = 0 ; i < n;i++){
            dp[0][i] = 1;
        }

        // 4.遍历顺序
        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];
    }
}

3- ACM 实现

public class uniquePaths {

    public static int uniquePaths(int m, int n) {
        // 1. 定义 dp
        int[][] dp = new int[m][n];

        // 2. 递推
        // dp[i][j] = dp[i-1][j] + dp[i][j-1]

        // 3. 初始化
        for(int i = 0 ; i < m ; i++){
            dp[i][0] = 1;
        }
        for(int i = 0 ; i < n;i++){
            dp[0][i] = 1;
        }

        // 4.遍历顺序
        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];
    }


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        System.out.println("结果是"+uniquePaths(m,n));
    }
}

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

相关文章:

  • ES6字符串的新增方法
  • C++中的std::tuple和std::pair
  • CTF攻防世界小白刷题自学笔记13
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
  • 文件输入输出——NOI
  • K8s进阶使用
  • Flask中的上下文(Context)
  • apache文件共享和访问控制
  • 深入理解 Milvus:新一代向量数据库的基础技术与实战指南
  • Linux系统上Oracle12C Release 2 (12.2)打补丁
  • 【Python机器学习】长短期记忆网络(LSTM)
  • 在 Debian 12 上安装中文五笔输入法
  • Zabbix企业级应用案列
  • C#学习笔记 .NET Core使用注意事项
  • 基于相亲交友系统的高效匹配算法研究
  • 快速排序(分治思想)
  • USB 3.1 标准 A 型连接器及其引脚分配
  • Leetcode Hot 100刷题记录 -Day10(合并区间)
  • druid连接gbase8s数据库报错空指针
  • vue2 组件通信
  • MySql Index索引使用注意
  • 数据分析-13-时间序列异常值检测的类型及常见的检测方法
  • 专题三_二分查找算法_算法详细总结
  • Jmeter之beanshell使用
  • 适合博客的组件库
  • RHEL 7 安装配置( Linux 网络操作系统 02)