递归算法流程图|递归详解( 四 )

所以呢,用了备忘录递归算法,递归树变成光秃秃的树干咯,如下:

带「备忘录」的递归算法,子问题个数=树节点数=n,解决一个子问题还是O(1),所以「带「备忘录」的递归算法的时间复杂度是O(n)」 。接下来呢,我们用带「备忘录」的递归算法去撸代码,解决这个青蛙跳阶问题的超时问题咯~,代码如下:
public class Solution { //使用哈希map,充当备忘录的作用 Map<Integer, Integer> tempMap = new HashMap(); public int numWays(int n) { // n = 0 也算1种 if (n == 0) { return 1; } if (n <= 2) { return n; } //先判断有没计算过,即看看备忘录有没有 if (tempMap.containsKey(n)) { //备忘录有,即计算过,直接返回 return tempMap.get(n); } else { // 备忘录没有,即没有计算过,执行递归计算,并且把结果保存到备忘录map中,对1000000007取余(这个是leetcode题目规定的) tempMap.put(n, (numWays(n - 1) + numWays(n - 2)) % 1000000007); return tempMap.get(n); } }}去leetcode提交一下,如图,稳了:

- 算法设计读后感精选
- 节能灯批发价格表 - led照明灯价格表
- 采购管理制度及采购流程 - 采购业务流程图
- 车辆购置税计算器 「车辆购置税2021新算法的」
- 酒店预订的优质 - 酒店客房预订业务流程图
- 铁皮石斛怎么种植_铁皮石斛移栽种植流程图
- 金额算法,随机分配算法
- 铝合金门窗价格,铝合金门窗价格算法
- 食品包装袋吨位价的算法 「食品包装袋成本怎么算」
- 集成吊顶算法 - 家装吊顶面积的算法实例
