递归版本:
大数据超时。
int uniquePaths(int m, int n) {
if(m<=0||n<=0)
return 0;
if(m==1||n==1)
return 1;
return uniquePaths(m-1,n)+uniquePaths(m,n-1);
}
那显然可以自底向上用备忘录/动态规划解法。
class Solution {
public:
int uniquePaths(int m, int n) {
if(m<=0||n<=0)
return 0;
if(m==1||n==1)
return 1;
vector<vector<int> > f(m+1,vector<int>(n+1,1));
f[m][n] = 1;
for(int i=m-1;i>=1;--i){
for(int j=n-1;j>=1;--j)
f[i][j] = f[i][j+1]+f[i+1][j];
}
return f[1][1];
}
};