斐波那契数列

15A1EB9D-D370-4313-AD94-22724C339611.png

使用递归算法:会出现很多重复的计算,造成效率的下降

直觉:能否记录下计算过的数,而不重新计算

解决方法一(记忆化搜索)

使用一个数组,将算过的值记录下来。

BFEB59AB-714A-4C13-BCD5-EA2FC6A2CE5C.png

解决方法二(动态规划)

自下而上解决问题

E440E376-8A37-4011-9557-C1C79CC01309.png

动态规划

将原问题拆解成若干个子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案。

0539C447-05C6-4DFE-9101-171F8CA589DB.png

leetcode#70 Climbing Stairs 爬楼梯

EA26D7B0-F842-4D6E-B19E-7737CC571D85.png

0C6439F8-8F37-433F-B26C-0CA1DAC2DE2F.png

leetcode#343 Integer Break 整数分割

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

**示例 1:**
输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

**示例 2:**
输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
说明: 你可以假设 n 不小于 2 且不大于 58。