自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构--栈与队列----模拟(用数组)

栈:先进后出。队列(循环队列):先进先出。

2024-09-26 16:21:29 361

原创 数据结构--链表与邻接表

双链表(双向链表):每个节点有一前一后两个指针。)单链表:邻接表(用最多) 存储图和树。链表是一种非连续存储的线性存储结构。链表的每一个节点都由数据和指针组成。时间复杂度为O(1)原理同上图。4.将下标是k的后面点删掉。二、链表的分类与基本操作。3.将x插到下标为k的节点。5.翻转 reverse。2.插入下标为k的节点后。

2024-09-23 14:14:26 319

原创 Sort函数

作用:对两个迭代器(或指针)指定的部分进行快速排序。可以在第三个参数传入定义大小比较的函数,或者重载“小于号”运算符。bool cmp(int a,int b)//重载运算符。return a>b;//a>b则放在前面。2️⃣//从大到小排序。

2024-09-08 16:05:33 102

原创 算法基础---最短路问题(实现)

3、稀疏图和稠密图区分:稠密图:n^2~m,稀疏图:n~m。循环后所有边一定满足dist[b]>=dist[a]+w //三角不等式。{ t←不在S中的距离min的点 n^2次。2、多源最短路:多个起点到其它所有点的最短路。注: 1、单源最短路:一个起点到其它所有点的最短路。(看dist[x]>dist[t]+w(权重))(看dist[x]>dist[t]+w(权重))dist[x]:当前1~x最短路间距离。

2024-09-07 15:44:22 693

原创 算法基础---区间和并

例题:区间和并---模板。

2024-09-03 19:57:15 369

原创 算法基础---离散化

当一组数据值域太大(例:0~10^9),而数据数量很小(例:10^5)时,值域中的数不是全都用得上的。所以需要用离散化将该组数据。例:a[]={1,3,3,100,50000};,来用数组表示这组数据,有效。

2024-09-03 19:15:33 373

原创 算法基础---位运算

0001k=0001,k=2,k是右移的位数,这里k = 2.(一)n的二进制表示中第k位(自右向左)是几?(二)、lowbit(x):返回x最后一位1及后面所有零。返回:x&-x 或 x&(~x+1)任何数据在计算机中都是以。进行操作,所以效率很高。总:1+2:n>>k&1。存储,位运算是指直接对。例:求二进制中1的个数。

2024-09-03 18:00:39 310

原创 算法基础---双指针

朴素算法在第二层遍历时,会重新开始j恢复到初始位置。但双指针则不会恢复到初始位置,在满足位置的地方继续走下去。以此减少算法的复杂度。输入一个字符每个子串之间有一个空格,让你输出每一个空格后的子串。1.快慢指针指向两段不同的内存,两指针同向移动扫描。2.对撞指针指向同一段内存,两指针反方向移动扫描。输入 abc def hij。例2:最长连续不重复子列。

2024-09-02 20:08:06 254

原创 算法基础---拓扑序列

∵一定存在一个入度为0的点。一、理解:有向无环图(亦称拓扑图)必有拓扑序列。出度:多少条边从该点指出。入度:多少条边指向该点。

2024-09-02 19:36:30 159

原创 算法基础---深搜(DFA)与广搜(BFS)

1、思路:先找一条路走到头无路可走记录方案并回退一格继续向下搜以此递归。2、注意:1、为减少算法复杂度需要记录之前遍历的结果,后直接调用即可。2、递归之后需要恢复现场。一层一层搜,当每一次搜索的权重相同时可以求”二、深度优先搜索(DFS)三、广度优先搜索(BFS)

2024-09-01 17:02:34 537

原创 基础算法---差分(前缀和逆运算)

接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。因为a数组为b数组的前缀和,∴b[i]+c 可使a[i]及以后每个a都变为a[i]+c。利用性质我们可以求【l,r】的a+c序列。(先b[l]+=c,再b[r+1]-=c)也就是说差分可以相当于数列中的an,前缀和可以看为Sn。接下来m行,每行包含三个整数l,r,c,表示一个操作。an的前缀和,b1……共一行,包含n个整数,表示最终序列。第二行包含n个整数,表示整数序列。使ai=b1+b2+……

2024-09-01 09:56:39 182

原创 const的用法

一、基本概念:const被称为常量限定符,定义后表示该变量不可修改。

2024-08-31 10:15:30 397

原创 atoi函数

【代码】atoi函数。

2024-08-31 09:55:05 241

原创 vector<int>& arr

在这个示例中, func1 中对 arr 的操作是在复制的对象上进行的,而 func2 中则是直接对传入的原始 myVector 进行操作。,从而提高程序的性能。当传递一个非常大的容器(如 vector )时,如果不使用引用而是按值传递,会导致整个容器被复制,这可能会带来较大的性能开销。在 vector<int>& arr 中使用 & 是为了传递引用。传递引用的主要目的是。

2024-08-31 09:30:43 252

原创 基础算法---前缀和

2.求区间和:【l,r】Sr-Sl-1=al+……ar 算法复杂度为o(1),需先预处理……其前缀和为si = a1+a2+∴求和:Sx2y2-Sx2,y1-1-Sx1-1,y2+Sx1-1,y1-1。类似于高中的数列sn为a的前n项和……因为x1,x2,y1等均为整数所以应以虚线位置计算面积。一、思想:有一数组a1,a2。

2024-08-30 21:28:45 229

原创 算法基础---高精度

在c++中int等存储类型最高只能计算少位整数,再大就超出存储空间了。这就需要用数组来存储大整数(例:整数的位数

2024-08-30 20:59:47 502

原创 算法基础---二分

2、检查mid是否不满足,若是则mid在右区间答案在【l,mid】反之同理。1、mid=(l+r+1)/2//加一原因:向下取整,防止死循环。2、检查mid是否满足,若是则mid在左区间,答案在【mid,r】①左边是满足某个条件的 ②右边是不满足的。(一)、思路:二分出边界点(①和②)方法一 :找边界点②。方法二 :找边界点①。

2024-08-30 09:10:49 288

原创 基础算法----排序

注:当基准数选择最左边的数字时,那么就应该先从右边开始搜索;当基准数选择最右边的数字时,那么就应该先从左边开始搜索。不论是从小到大排序还是从大到小排序!2️⃣调整区间:分成小于x和大于等于x两部分。(用双指针(对撞))2.思路 1️⃣确定分界点(找个基数x):q[l],q[r]等。3️⃣递归处理左右两段。分治思想:先拆成最小单元,再按顺序依次归并。(二)模板:从小到大排序(大到小同理)3.归并(合二为一)用快慢指针。1.核心思想:分治---分而治之。(一)思想----分治。

2024-08-30 08:39:13 319

空空如也

空空如也

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

TA关注的人

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