一个机器人在m×n大小的地图的左上角(起点)。
机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。
可以有多少种不同的路径从起点走到终点?
备注:m和n小于等于100,并保证计算结果在int范围内
数据范围:,保证计算结果在32位整型范围内
要求:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度
2,1
1
2,2
2
0 | 1 | 1 | 1 | 1 |
1 | 2 | 3 | 4 | 5 |
1 | 3 | 6 | 10 | 15 |
1 | 4 | 10 | 20 | 35 |
# # # @param m int整型 # @param n int整型 # @return int整型 # class Solution: def uniquePaths(self , m , n ): # write code here # 迭代法 if m==0&nbs***bsp;n==0: return 0 if m==1&nbs***bsp;n==1: return 1 data = [[1]*m for i in range(n)] for i in range(1,n): for j in range(1,m): data[i][j] = data[i][j-1] + data[i-1][j] return data[n-1][m-1] # 递归法 超时 # if m==0&nbs***bsp;n==0: # return 0 # if m==1&nbs***bsp;n==1: # return 1 # return self.uniquePaths(m-1,n)+self.uniquePaths(m,n-1)
# @param m int整型 # @param n int整型 # @return int整型 # class Solution: def uniquePaths(self , m , n ): li={} for a in range(1,m+1): li[a,1]=1 for a in range(1,n+1): li[1,a]=1 for i in range(2,m+1): for j in range(2,n+1): li[i,j]=li[i-1,j]+li[i,j-1] return li[m,n]