leetcode 每日一题 62. 不同路径

Posted nil_f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 62. 不同路径相关的知识,希望对你有一定的参考价值。

找规律

思路:

由题意可知,由于只能向下或向右移动,所以总共只需要走(m-1)+(n-1)= m+n-2步。而只需要确定m-1步向右的步数或者确定向下的n-1步,即可确定路径,所以共有或者种可能。

 

 

代码:

 

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        return int(math.factorial(m+n-2)/math.factorial(m-1)/math.factorial(n-1))

 

动态规划

思路:

dp[i][j]表示从起点到 i , j 的路径数量,由题意可知dp[0][j]=1,dp[i][0]=1,在 i != 0 和 j != 0 情况下,dp[i][j] = dp[i-1][j]+dp[i][j-1]

代码:

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp = [[1]*n] + [[1]+[0] * (n-1) for _ in range(m-1)]
        for i in range(1, m):
            for j in range(1, n):
                dp[i][j] = dp[i-1][j] + dp[i][j-1]
        return dp[-1][-1]

代码2:

由于二维数组中dp[i][j] = dp[i-1][j]+dp[i][j-1],故可采用一维数组层层滚动更新的方式。

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        cur = [1] * n
        for i in range(1, m):
            for j in range(1, n):
                cur[j] += cur[j-1]
        return cur[-1]

 

 

 

 

 

 

 

 

 

以上是关于leetcode 每日一题 62. 不同路径的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 每日一题 63. 不同路径 II

leetcode 每日一题 63. 不同路径 II

LeetCode每日一题刷题总结

leetcode 每日一题 64. 最小路径和

leetcode 每日一题 64. 最小路径和

《LeetCode之每日一题》:25. 不同路径