参考题目解析给出阶乘计算的方法
class Solution {
public int uniquePaths(int m, int n) {
//只跟第几行第几列有关,从m+n-2步中抽出m-1步
long ans=1;
for(int i=0;i<Math.min(m-1,n-1);i++){
ans*=m+n-2-i;
ans/=i+1;
}
return (int)ans;
}
}
【注】不要单独计算分子和分母的阶乘
参考题目解析给出动态规划的方法
public int uniquePaths(int m, int n) {
int[] pre = new int[n];
int[] cur = new int[n];
Arrays.fill(pre, 1);
Arrays.fill(cur, 1);
for (int i = 1; i < m;i++){
for (int j = 1; j < n; j++){
cur[j] = cur[j-1] + pre[j]; // 上一行保留的数字
}
pre = cur.clone();
}
return pre[n-1];
}