type
status
date
slug
summary
tags
category
icon
password
状态
专注质量
预计(分钟)
开始时间
结束时间
本文是经过在代码随想录网站上学习和刷题,总结下来的一些思考。如有侵权,立刻删除。

🤔 综述

动态规划部分的题目类型多、难度较高,需要刷题时格外注意体会思路。
现总结动态规划五部曲如下:
  1. 确定dp数组(dp table)以及下标的含义
  1. 确定递推公式
  1. dp数组如何初始化
  1. 确定遍历顺序
  1. 举例推导dp数组
其中,最困难的实际上是第三步和第四步。当我们遇到一个问题时,如果我们能确定要使用动态规划方法来解决,那么说明我们已经对状态如何转移和推导有了一个模糊的认识,而dp数组无非就是一维、二维两种情况,分别去思考如何定义合理即可。
最难的部分是初始化和遍历。我们需要知道dp数组中下一个元素的来源,以推导出它。如果dp[i][j]由左上角的元素推出,那么遍历顺序一定是从上往下,从左往右;如果dp[i][j]由下方和左边的元素推出,那么遍历顺序一定是由下往上,从左往右,依次类推。
建议在没有思路的时候,打开本地的控制台程序,将自己推导的公式打印出来看看,理清思路。可以借此机会练习一下ACM模式。

📝动态规划

题型

动态规划基础

很容易掌握的一些题目,复习时简单看下即可。

背包问题

notion image

打家劫舍系列

这个系列很有意思,也不难,

股票系列

notion image
股票系列问题也不是很难,可以简单复习下。

子序列系列

这个部分的一些题目是相当难的,一刷基本上已经放弃了,回头再说吧。
notion image

贪心与动态规划

当遇到回溯算法、动态规划和贪心算法相关的题目时,你会明显感觉到它们与之前的题目有所不同。
这是因为这些题目开始更密切地与现实情境结合,而且往往是各大公司主要考察的题目。
因此,当遇到这类题目时,你可以花费1-2分钟按照以下的思路尝试解题:
  • 暴力算法(如果在使用暴力算法过程中,发现连嵌套循环的次数都无法确定,那么大概率是回溯算法,因为回溯算法的时间复杂度通常是指数级)
  • 贪心算法(如果能够聪明地解决问题)
  • 动态规划(如果能将问题划分为一系列小问题,这是一种数学思想)
基本上这样就能找到解题的思路,接下来就是如何实施这五部曲的问题了。

🤗总结归纳

notion image
需要感谢代码随想录,刷完这一部分的题目后,基本上就可以宣布告一段落了。这个刷题顺序还是比较不错的,非常感谢前人做的一系列总结和归纳,让后来者在刷题时减少了许多试错成本。
 
致谢:
💡
Written by Aryue,editted by Notion AI.
 
 
2024游戏客户端春招记录代码随想录—贪心
Aryue
Aryue
一个普通的干饭人🍚
公告
type
status
date
slug
summary
tags
category
icon
password
状态
专注质量
预计(分钟)
开始时间
结束时间
📧:578626935@qq.com