LeetCode hot100-91
https://leetcode.cn/problems/unique-paths/description/?envType=study-plan-v2&envId=top-100-liked
62. 不同路径
已解答
中等
相关标签
相关企业
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
构建一个二维数组 dp,其中 dp[i][j] 表示从起点到位置 (i, j) 的路径总数。
思路
初始化:
起点 dp[0][0] = 1,因为机器人只能从起点开始。
第一行和第一列的路径数都为 1(机器人只能一直向右或向下)。
状态转移:
对于任意位置 (i, j),路径总数等于从上方到达该点的路径数加上从左侧到达该点的路径数:
dp[i][j] = dp[i-1][j] + dp[i][j-1]
返回 dp[m-1][n-1],即右下角位置的路径数。
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
for(int i=0;i<m;i++){
dp[i][0]=1;
}
for(int i=0;i<n;i++){
dp[0][i]=1;
}
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];
}
}
return dp[m-1][n-1];
}
}