問題描述:一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。問總共有多少條不同的路徑?
示例:
輸入: 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]
時間與空間複雜度:
時間複雜度有點高⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄,因爲是兩層循環,大家有好的方法可以留言啊。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/probl...