为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第15天...

【九月打卡】第15天 算法设计思想之“动态规划”

2022.09.19 11:33 30浏览

课程名称:JavaScript版数据结构与算法
课程章节:第13章 算法设计思想之“动态规划”
主讲老师:lewis

课程内容:

今天学习的内容包括:
13-3 LeetCode:198. 打家劫舍——使用动态规划,把各种可能性分别计算后合并得到解。
13-4 动态规划-章节总结——动态规划的定义以及解题方法。
13-5 【勤于思考,夯实学习成果】阶段思考题——完成对应作业。

课程收获:

198. 打家劫舍

解题思路
  • f(k)=从前k个房屋中能偷窃到的最大数额。
  • Ak =第k个房屋的钱数。
  • f(k)= max(f(k -2)+ Ak, f(k - 1))。
  • 考虑使用动态规划。
解题步骤
  • 定义子问题: f(k)= max(f(k -2)+ Ak, f(k - 1))。
  • 反复执行:从2循环到n,执行上述公式。
    dp[i] = Math.max(dp[i - 2] + nums[i - 1], dp[i - 1]);
性能分析
  • 时间复杂度:O(n)。
  • 空间复杂度:O(n) || O(1)。

章节总结

动态规划是什么
  • 动态规划是算法设计中的一种方法。
  • 它将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原来的问题。
动态规划的步骤
  • 定义子问题。
  • 反复执行。
  • 合并处理结果。

今天 通过 动态规划 学习了 打家劫舍算法题,今天有种感觉就是算法好像对数学的要求还是有的,明显感觉自己的数学能力不够,理解算法有点吃力,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​​​https://img1.sycdn.imooc.com/6327cdbc00019cb225201433.jpg

https://img2.sycdn.imooc.com/6327e18d0001851225261456.jpg

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
9
获赞与收藏
1

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消