题目链接
思路
- 使用动态规划来解题
- dp[x][y] =dp[x-1][y]+dp[x][y-1]
- 按常理需要定义一个二维数组或者两个一维数组进行计算;
- 但是我们每次进行计算时,只需要当前行-1或者当前列-1;可以使用滚动数组的方式来优化一下空间
java
public int uniquePaths(int m, int n) {
int[] cur = new int[n];
Arrays.fill(cur, 1);
for (int x = 1; x < m; x++) {
for (int y = 1; y < n; y++) {
// 每次获取的都是dp[x][y]
cur[y] += cur[y - 1];
}
}
return cur[n - 1];
}
go
func uniquePaths(m int, n int) int {
cur := make([]int, n)
for i := range cur {
cur[i] = 1
}
for x := 1; x < m; x++ {
for y := 1; y < n; y++ {
// 每次获取的都是dp[x][y]
cur[y] += cur[y-1]
}
}
return cur[n-1]
}