大家好,今天我们要讨论的是LeetCode第62题:“不同路径”。这道题的核心在于计算从左上角到右下角有多少种不同的路径。今天,我们将带着“乐高积木”的心态,一块一块地搭建出我们的解决方案。
文章目录
题目描述
给定一个m x n的网格,从左上角到右下角有多少条不同的路径?你只能向右或向下移动。
例如:
输入: m = 3, n = 7
输出: 28
解题思路
DP解法:动态规划——从泥泞道路到康庄大道
我们可以把这道题看作是在一个泥泞的田野上,从左上角的起点走到右下角的终点,而我们只能向右或向下走。要想知道到达终点的路径数,我们可以先来看看如何到达每一个格子。
一步一步来:状态定义
定义一个二维数组dp
,其中dp[i][j]
表示到达位置(i, j)的不同路径数。显而易见:
- 到达起点
dp[0][0]
只有一种方法,那就是不动,所以dp[0][0] = 1
。 - 如果我们只能向右或向下走,那么到达位置(i, j)的路径数应该等