个人思路总结:
这道题有两种实现方式,我都讲一下:
1、递归(时间复杂度太高)
太简单了。。。直接上代码(leetcode里面部分测试用例超时了)
class Solution {
public:
int uniquePaths(int m, int n) {
return dfs(m,n);
}
int dfs(int m, int n)
{
if(m==1||n==1)
return 1;
int res = dfs(m-1,n)+dfs(m,n-1);
return res;
}
2、动态规划
class Solution {
public:
int uniquePaths(int m, int n) {
int dp[m][n]; //注意这里建立二维数组的方式
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(i==0||j==0)
dp[i][j] = 1;
else
dp[i][j] = dp[i-1][j]+dp[i][j-1];
}
}
return dp[m-1][n-1];
}
};