自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 【算法复杂度分析】渐进符号

我们评估一个算法的好坏一般是看这个算法的时间复杂度和空间复杂度。那么我们从时间复杂度说起:一个算法所耗费的时间=算法中每条语句的执行时间之和每条语句的执行时间=语句的执行次数(即频度(Frequency Count))×语句执行一次所需时间我们通常用渐进记号来表示时间复杂度和空间复杂度那么渐进记号有哪些呢?渐近精确界记号:Θ(big-theta)渐近上界记号 :O(big-oh)渐近下界记号 :Ω(big-omege)非渐近紧确上界:o(小-oh)非渐近紧确下界:ω(小

2021-07-26 09:32:16 719

原创 【线性结构】前缀和

问题:有n个数字,给你多组l,r,输出每一组(l,r)区间的和。如果暴力求解的话,每次需要O(n*k)的复杂度,那么数据一大就会爆掉但是,我们小学就学过数列求和,我们知道:Sn-Sn-1=an那么数组同理,a为原数组,b为前缀和数组令b[p]=b[p-1]+a[p]=a[1]+a[2]+…+a[p],那么:a[L]+a[L+1]+…+a[R]=b[R]-b[L-1]求(l,r)区间和就变成了b[r]-b[l-1];复杂度O(n)-O(1)上代码:for(int i=1;i&l

2021-07-25 23:13:44 73

原创 【线性数据结构】单调队列

顾名思义,单调队列就是一个递增或者递减的队列,我们只需要维护这个队列的单调性。单调队列能解决一个叫滑动窗口的问题这个问题是这样的:有一列数{a_n}和m个区间[L(i),R(i)],满足L(i)<=L(i+1), R(i)<=R(i+1)。对每个区间求区间最大值。由于这看上去像是有个大小不固定的窗口在移动,然后你透过窗口观察能看 到的数字的最值,所以称为滑动窗口问题。这个问题至少能用随便什么数据结构在O(nlgn)时间内完成,但是使用单调队列可以做到O(n)滑动窗口代码:

2021-07-25 13:59:55 81

原创 【线性数据结构】单调栈

先思考一个问题:给你一列数字,对每个数字求出其右边第一个值大于等 于它的数字的位置。要求做到线性。​如果暴力枚举那复杂度是O(n^2),那花费算是相当大的,我们可以用一个栈来维护这个队列,只扫描一次数据就可以达到目的。具体操作:把数据压入栈中,如果这个数据大于(或者小于)栈顶元素,那就pop栈顶元素,这样操作n次。这样就维护了一个单调减栈(单调增栈)通俗一点,一群人在排队,硬气度分别为(1 4 2 3 5),按顺序排队,硬气度低的害怕硬气度高的,只要硬气度高的在硬...

2021-07-24 16:30:00 94

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除