算法
文章平均质量分 93
分享一些常见的算法
晚风吹长发
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
什么!这就是前缀和算法,竟然如此简单!
先预处理出来⼀个「前缀和」数组:⽤ dp[i] 表⽰: [1, i] 区间内所有元素的和,那么 dp[i - 1] ⾥⾯存的就是 [1,i - 1] 区间内所有元素的和,那么:可得递推公式: dp[i] = dp[i - 1] + arr[i];第⼀步:搞出来前缀和矩阵 ,这⾥就要⽤到⼀维数组⾥⾯的拓展知识,我们要在矩阵的最上⾯和最左边添加上⼀⾏和⼀列0,这样我们就可以省去⾮常多的边界条件的处理(同学们可以⾃⾏尝试直接搞出来前缀和矩阵,边界条件的处理会让你崩溃的)。sum[i]的位置。原创 2025-11-30 13:32:05 · 1014 阅读 · 0 评论 -
什么!原来这才是真正的二分算法!
本文介绍了二分查找算法及其在7个典型题目中的应用。文章首先解释了二分查找的基本原理和"二段性"概念,即通过中间值将数组分为两部分并舍弃其中一部分的能力。然后提供了三种二分查找的模板:一般查找、最左值查找和最右值查找。接着详细讲解了7道应用二分查找的题目解法,包括:1)基本二分查找;2)查找元素的起止位置;3)求平方根;4)搜索插入位置;5)山脉数组峰顶索引;6)寻找峰值;7)点名问题(找出缺失数字)。每道题目都给出了解题思路和代码实现,重点分析了如何根据题目特点调整二分查找的条件判断和边原创 2025-11-15 19:46:11 · 1032 阅读 · 0 评论 -
什么!滑动窗口原来如此丝滑
本文总结了7道常见滑动窗口问题的解法,主要涉及数组和字符串处理。这些问题包括:求最短满足条件的子数组、无重复字符的最长子串、最大连续1的个数、将x减到0的最小操作数、寻找字母异位词、水果分类问题,以及最小覆盖子串。每个问题都通过滑动窗口算法进行优化,使用双指针和哈希表来高效解决问题。文章详细阐述了每种情况下的解题思路,并提供了相应的C++代码实现,展示了如何通过调整窗口大小来满足不同条件,最终求得最优解。这些解法都具有O(n)的时间复杂度,是处理子数组/子串问题的典型范例。原创 2025-10-30 22:42:34 · 887 阅读 · 0 评论 -
双指针算法+详细题目分析
本文总结了8个数组相关的算法题解,主要运用双指针和单调性思想解决问题:1.移动零使用快排分区思想,将非零元素前移;2.复写零通过反向遍历避免数据覆盖;3.快乐数通过快慢指针检测循环;4.盛水容器利用宽度收缩策略;5.有效三角形个数通过排序和双指针优化;6/7/8题分别解决两数、三数和四数之和问题,通过排序+双指针+去重策略实现,其中三数和四数问题逐步转化为更小规模的子问题。这些解法都体现了通过指针移动和数组特性来降低时间复杂度的思路。原创 2025-09-15 22:51:58 · 649 阅读 · 1 评论
分享