题目
一个机器人在m×n大小的地图的左上角(起点)。
机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。
可以有多少种不同的路径从起点走到终点?

备注:m和n小于等于100,并保证计算结果在int范围内。
数据范围:0<n,m≤100,保证计算结果在32位整型范围内。
要求:空间复杂度O(nm),时间复杂度 O(nm)
进阶:空间复杂度 O(1),时间复杂度 O(min(n,m))
示例1
输入:
2,1
返回值:
1
示例2
输入:
2,2
返回值:
2
代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param m int整型
* @param n int整型
* @return int整型
*/
public int uniquePaths (int m, int n) {
//1.创建dp表
int[][] dp = new int[m + 1][n + 1];
//2.初始化
dp[0][1] = 1;
//3.填表
for(int i = 1; i <= m; i++) { //从上往下每一行
for(int j = 1; j <= n; j++) { //从左往右填写每一行
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
//4.返回值
return dp[m][n];
}
}
求解机器人到达终点的不同路径数
该问题是一个经典的动态规划问题,机器人从m×n大小地图的左上角出发,每次只能向下或向右移动,目标是计算到达右下角的不同路径数。给定的解决方案使用了一个二维数组dp来存储每个位置的路径数,并通过填充dp表得到最终答案。时间复杂度和空间复杂度均为O(nm),但有要求优化到O(min(n,m))。
254

被折叠的 条评论
为什么被折叠?



