不同路径(Python3)

问题描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?
不同路径(Python3)

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

解决思路:使用动态规划思想,假设到达终点之前我们只有两种选择,一种是向下移一位,一种是向右移一位,即
path[m][n] = path[m-1][n]+path[m][n-1]
我们知道path[0][0]=1依次计算到path[m][n]

代码如下( ̄▽ ̄):

import numpy as np
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        res = np.zeros((m, n),dtype=np.int)
        for i in range(0,m):
            for j in range(0,n):
                if j-1>=0 and i-1>=0:
                    res[i][j] = res[i-1][j]+res[i][j-1]
                elif j-1>=0:
                    res[i][j] = res[i][j-1]
                elif i-1>=0:
                    res[i][j] = res[i-1][j]
                else:
                    res[i][j] = 1
        # print(res)
        return res[m-1][n-1]

时间与空间复杂度:
不同路径(Python3)
时间复杂度有点高⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄,因为是两层循环,大家有好的方法可以留言啊。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...

相关推荐