62.不同路径

2024/3/26

# Heading

    62.不同路径 (opens new window)

    Tags: algorithms bloomberg array dynamic-programming

    Langs: c cpp csharp dart elixir erlang golang java javascript kotlin php python python3 racket ruby rust scala swift typescript

    • algorithms
    • Medium (68.06%)
    • Likes: 2007
    • Dislikes: -
    • Total Accepted: 756.7K
    • Total Submissions: 1.1M
    • Testcase Example: '3\n7'

    一个机器人位于一个 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 * 109
    /*
     * @lc app=leetcode.cn id=62 lang=javascript
     *
     * [62] 不同路径
     */
    
    // @lc code=start
    /**
     * @param {number} m
     * @param {number} n
     * @return {number}
     */
    var uniquePaths = function (m, n) {
      const dp = []
      for (let i = 0; i < m; i++) {
        dp[i] = [1]
      }
      for (let i = 1; i < n; i++) {
        dp[0][i] = 1
      }
    
      for (let i = 1; i < m; i++) {
        for (let j = 1; j < n; j++) {
          dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
        }
      }
    
      return dp[m - 1][n - 1]
    }
    // @lc code=end
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30