![](https://img-blog.csdnimg.cn/direct/609347fc2e674fd28110992d7294f337.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法Journey
文章平均质量分 95
分享常见的算法知识以及例题共同进步
9ilk
爱码人士
展开
-
【前缀和算法】--- 一维和二维前缀和模板
任取一块区域,假设D为(i,j)点,若我们要求dp[i][j]也就是求(1,1)到(i,j)区域的和,我们可以将这四部分相加,由于B和C不好求,我们可以利用A(dp[i-1][j-1])来间接求这两部分,但是不要忘记减去多进来的A。我们前缀和数组下标是从1开始的,如果下标从0开始,当求[0,2]区间的值之和时就转化成dp[2] - dp[-1]这个dp[-1]是个边界情况需要我们特殊处理且。我们发现,比如dp[3]是【1,3】区间值的和,那么就相当于是【1,2】区间的和+arr[3].2.使用前缀和数组。原创 2024-08-20 21:43:43 · 830 阅读 · 26 评论 -
【二分查找】--- 进阶题目赏析
二分过程:参考代码:🏠 寻找旋转排序数组中的最小值📌 题目内容二分流程:参考代码:思考:我们划分两端区间是以D为参考点,那么我们是否能以A为参考点呢?🏠 0~n-1中缺失的数字📒 思路二:直接遍历找结果📒 思路三:位运算📒 思路四:高斯求和公式📒 思路五:二分查找前面的思路都很简单,但时间复杂度都是O(N)。仔细观察我们发现因为缺失了数字,会造成二段性。参考代码:原创 2024-08-19 22:09:49 · 1528 阅读 · 25 评论 -
【二分查找】--- 初阶题目赏析
数组为一个升序数组。与经典的二分查找不同的是,如果找不到目标值啧应该返回它应该在数组中被插入的位置。参考代码:🏠 x的平方根📌 题目内容📌 题目解析 对于平方根不是整数的相当于是向下取整本题数据范围为 0 <= x <= 2^31 -1,用int可能会溢出,因为会有平方的操作。参考代码:原创 2024-08-17 21:35:47 · 1629 阅读 · 16 评论 -
【二分查找】--- 二分模板总结
/也可以是left+(right-left+1)/2;注:...表示具体问题具体分析。查找左边界总结:本博客我们讲解了朴素二分模板以及边界二分模板,朴素二分模板应用比较局限,而对于边界二分模板我们更常用.对于边界二分模板,我们要处理好它的循环条件以及求中点,同时根据我们求的左端点还是右端点来更新left和right.原创 2024-08-16 13:21:24 · 1357 阅读 · 27 评论 -
字符串匹配 --- BF算法 && KMP算法
对于此时不匹配我们能提取到的一个信息是你其实知道前面六个字符是"ABCDAB",因此我们可以利用这个信息找到最大程度能匹配子串的一部分,此时就是最好的情况这便是KMP算法的核心 --- 利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。与BF算法不同的是,当匹配失败时,主串时不回退的,子串回退到相应位置。问题是KMP算法中,当匹配失败时,子串怎么知道该回退到哪个位置?原创 2024-06-26 20:12:37 · 877 阅读 · 35 评论 -
[双指针] --- 快乐数 && 盛最多水的容器
结合我们发现的规律以及对撞指针的原理,我们的。原创 2024-05-29 22:49:14 · 2556 阅读 · 48 评论 -
【双指针算法】--- 移动零 && 复写零
注意点:1.在找0时,如果遇到类似【1,2,3】这样的例子,可能会越界,所以我们需要加上一个限制条件2.在复写时,如果插入0的位置合法,我们正常插入;如果不合法(比如 【1 2 3 4 0】),我们仍然需要更新cur指针使它遍历完数组。原创 2024-05-22 22:44:09 · 1180 阅读 · 55 评论