
从0到1攻克算法
文章平均质量分 93
备战秋招之算法篇
Undefined__yu
少吹牛逼多学习
展开
-
动态规划之子数组系列问题
解题步骤:创建 dp 表以及确定 dp 表中所要填写位置的含义:首先,根据写题经验,先确定出这道题应该使用的解题思路是 “以某一个位置为结尾进行分析”。在这道题中,规定 dp[i] 表示以 i 位置为结尾的子数组中的最大和。确定状态转移方程:以 i 位置为结尾的子数组有两种情况。① 子数组中只有自己,这时 dp[i] = nums[i]。② 和前面的其他元素组成一个子数组,则可以理解为 以 i - 1 为结尾的最大子数组和 + nums[i] 本身。所以,应该是上面两种情况的最大值。原创 2024-08-02 20:44:37 · 1096 阅读 · 0 评论 -
动态规划之多状态 dp 问题
多状态 dp 问题要注意以下几点:创建 dp 表的个数取决于,需要多少个 dp 表才能完全表示出所需要的每一种状态。对 dp 表的初始化要确保不会影响后面填表的正确性。对于解题思路中的每一种状态,要分析它经过某种操作是否能到达其他状态或保持不变,这是推导状态转移方程的关键所在。最后的返回值一定要再次分析题目,确定返回的是符合题目要求的答案。原创 2024-08-02 11:17:09 · 739 阅读 · 0 评论 -
动态规划之路径问题
在我看来,动规问题中的路径问题应该有以下几点值得注意的:开出来的 dp 表中,每一个位置到底代表什么。填表的时候一定要注意在容易越界的地方,进行合适的初始化,初始化的数据一定不能影响后面数据的正确性。到底该 “以某一个位置为结尾” 还是 “以某一个位置为起点” 应该看 dp 表中的某一个位置的值,是否还受后面的值的影响。原创 2024-07-31 19:31:09 · 1098 阅读 · 0 评论 -
二分查找算法
所谓的“朴素”就是整个数组是完全有序的,直接可以对整个数组划分成两段进行第一次判断,也是最简单的一种,也就是上面这道题。省略号部分就根据题目要求以及个人习惯替换就好。注意,这个模板只适用于像这样最简单的二分查找题,如果遇到更困难的还需要用到下文中的模板。解析:这道题就不能用上述朴素的二分查找算法来写,因为这道题中的数字不是严格递增的,而且要找的元素是一个区间的首位和最后一位。有什么区别?原创 2024-07-30 18:06:45 · 1007 阅读 · 0 评论 -
滑动窗口篇
两个滑动窗口的要点:单调性:数据在某一方向上呈现某一种单调性,此时滑动窗口移动的时候才是有依据的。左右两个指针:两个指针分别是滑动窗口的两个边,移动指针控制窗口大小。原创 2024-07-30 17:53:53 · 836 阅读 · 0 评论