0
点赞
收藏
分享

微信扫一扫

不同路径.

胡桑_b06e 2022-04-25 阅读 110

题目链接

思路

  • 使用动态规划来解题
  • 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]
}
举报

相关推荐

0 条评论