class Solution {
public:
/**
*
* @param m int整型
* @param n int整型
* @return int整型
*/
int uniquePaths(int m, int n) {
if (m < n) {
swap(m, n);
}
long long res = 1;
for (int i = m; i <= m + n - 2; ++i) {
res = res * i / (i - m + 1);
}
return res;
}
};
思路:组合数学。
一共需要向下走n - 1次,向右走m - 1次,共m + n - 2次。
即从m + n - 2次步数中选择n - 1次向下走,为C(n - 1) (m + n - 2)。

京公网安备 11010502036488号