···
/*
- 假设把向下表示为A,向右表示为B,则问题可以视为m-1个A元素和n-1个B元素的排列总和,因此使用计算公式为(m+n-2)!/(n-1)!*(m-1)!
*/
class Solution {
public int uniquePaths(int m, int n) {
m--;n--;
int count= m+n;
long cfac = 1, mfac = 1;
for(int i = Math.max(m,n)+1; i <= count; i++){
cfac *= i;
}
for(int i = 1; i <= Math.min(m,n); i++){
mfac *= i;
}
return (int)(cfac / mfac);
}
}
···
网友评论