题目:
分析:
这道题呢,如果我们学过离散数学,就会很清楚的知道,这是道排列组合的问题C(n-1,n+m-2)
所以基于此我进行了代码编辑
不过很可惜的是
在计算过程中,由于数值过大,超出了int范围,当然也可以用double或long去做,不过那样似乎就没什么意义了
后来发现,原来还有一种方法也同样可以解决这个问题
我们将格子转换为二维数组
每一个格子都表示从左上角到该位置的路径数
而我们的代码不一定适用二维数组,用一维数组同样可以表示
代码:
class Solution {
public int uniquePaths(int m, int n) {
int[] nums = new int[n];
//为数组填充1
Arrays.fill(nums, 1);
//计算每个位置的路径数
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
nums[j] += nums[j - 1];
}
}
return nums[n - 1];
}
}