Leetcode 62 不同路径 递归/动态规划/数学法

该博客详细介绍了LeetCode第62题《不同路径》的三种解法:数学法、递归法和动态规划法。数学法通过计算组合数求解;递归法利用记忆化搜索避免重复计算;动态规划法自底向上计算。每种方法都有其独特之处,并考虑了性能和空间优化。

题目

Leetcode 62 不同路径

解题思路

这道题其实是高中数学中排列组合问题里面的典型问题。可以用多种方法求解。
以下给出的方法效率都很高。有数学法、动态规划法、递归法。

代码

法一:数学法

微信图片_20200327010308.png

其实,本道题在排列组合问题中可化为求C(m+n-2,m-1)(或C(m+n-2,n-1))。
即一共有m行n列,其中需要向下走m-1步,向右走n-1步,一共走m+n-2步。所以就是在m+n-2步中选出哪m-1步是向下走的,其余自动为向右走的步数。
TIPS:本方法要注意计算组合数的时候要先化简,且要用unsigned long long/double 来表示,否则会超过范围。

class Solution {
   
   
public:
int uniquePaths(int m, int n) {
   
   
	if (m == 1 || n == 1)
		return 1;
	if (m > n)
		swap(m, n);//保证m<=n
	//计算阶乘:不用调用函数,节省空间
	unsigned long long 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值