记忆化搜索 dfs

Q1   198. 打家劫舍

解法一:

知识点:记忆化搜索=递归搜索+保留计算结果

递归部分:

这样写能够完成上述题目,但是会超时,因为时间复杂度是质数级别,这时候就需要改进代码,也就是保留结果

Cache

简单解释一下,这里就运用了cache,起初全设置为-1,在进入dfs函数之后首先我们会判断这个dfs之前有没有调用过,也就是有没有保存过计算后的值,如果有,那么直接用,如果没有责在res计算后将其数值记到cache中,以便后续使用,这时候时间,空间复杂度都是n

修改后的代码:

此时复杂度还是n

优化:

升级版(记忆化搜索

代码:

优化:首先进入dfs之前就将三种方式都计算一遍,将得到的target值作为参数传入dfs

解释一下res=max(res,dfs(xxx)+1),为什么要把res和后面的对比来选择最大的,我们知道三个if是顺序执行的,在第二个if执行的时候,res的值已经是第一轮if执行完更新后的res了,所以第二个if中的res其实是第一个if执行完成后的if,相对的,第三个if中的res其实是第二个if执行完的if,那么为什么第一个if也要加res=max(res,dfs(xxx)+1)呢?,因为第一个if也要进入dfs的三个if,同样要通过比较三个if的res来筛选出最大的res

相关推荐

  1. dp_day6(从记忆搜索(dfs)到递推(dp))

    2024-06-10 16:46:01       51 阅读
  2. 1028记忆搜索dp**

    2024-06-10 16:46:01       43 阅读
  3. 困难 Leetcode 312. 戳气球 区间dp/记忆搜索

    2024-06-10 16:46:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 16:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 16:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 16:46:01       82 阅读
  4. Python语言-面向对象

    2024-06-10 16:46:01       91 阅读

热门阅读

  1. 04-4.2.3 KMP 算法求 next 数组

    2024-06-10 16:46:01       35 阅读
  2. 【系统学C++】一、从C语言到C++(一)

    2024-06-10 16:46:01       30 阅读
  3. 关于MySQL 中的全局事务标识符GTID

    2024-06-10 16:46:01       31 阅读
  4. C# - 委托与事件

    2024-06-10 16:46:01       26 阅读
  5. 如何进行《我的世界》基于Spigot的插件开发

    2024-06-10 16:46:01       29 阅读
  6. 前端构建工具总结

    2024-06-10 16:46:01       26 阅读
  7. docker部署mysql+nginx+redis

    2024-06-10 16:46:01       29 阅读
  8. 大数据领域的workload是什么意思?

    2024-06-10 16:46:01       25 阅读
  9. “抖动“ 与工作集

    2024-06-10 16:46:01       23 阅读
  10. GPT大模型微调-提高垂直领域回答质量

    2024-06-10 16:46:01       33 阅读
  11. 关于我做了一个python项目的总结

    2024-06-10 16:46:01       26 阅读
  12. Python 编程时可能会遇到各种错误提示

    2024-06-10 16:46:01       28 阅读
  13. Python 中生成器与普通函数的区别

    2024-06-10 16:46:01       30 阅读
  14. 2024.6.10 刷题总结

    2024-06-10 16:46:01       27 阅读