自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 由数据范围反推算法复杂度以及算法内容(y总)

2024-03-12 19:07:12 396 1

原创 树与图的存储与遍历

树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。(1) 邻接矩阵:g[a][b] 存储边a->b 存储稠密图(2) 邻接表: 存储稀松图。

2024-03-11 21:11:33 345 1

原创 将二维字符数组输出为一维字符串

我们要注意开数组的时候要多开,比如开成 g[N][N] , N =4;但是假如横向或者纵向输入满了就不行了,比如。并使每行的三个字符组合成字符串输出(

2024-03-11 17:06:34 354 1

原创 哈希表(普通数字哈希+字符串哈希)

I xQ x现在要进行 N 次操作,对于每个询问操作输出对应的结果。

2024-03-05 20:53:53 1128

原创 DFS、BFS

我们每个点都是同时向外拓展一步,并且只拓展一次。那么我们将其速度看作1步/次。每个点都向外探索一次。那么此时我们的次数可以类比为时间,由此每条路的速度和时间都是一样的,因此每条路的路程都是一样的。而各个点都是从起点开始扩散的。我们看下面的例子:某时刻,绿色线到达了B点,此时各个路线的长度都是L,那么接下来再走的话,蓝色线的路程和黄色线的路程只会更长,因此其再到达B点的时候,必不如绿色线近。因此,第一次到达某个点的路线,就是最短的路线。

2024-03-05 20:31:04 853

原创 质数、质因数

概念:(1)质数(素数):一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。(2)质因数:指能整除给定正整数的质数。质数给定 n 个正整数 ai,判定每个数是否是质数。

2024-02-27 20:51:42 371

原创 堆(手写小根堆)

若一棵二叉树至多只有最下面两层的结点的度数可以小于2,并且最下层的结点都集中在该层最左边的若干位置上,则此二叉树为完全二叉树。将节点上(up函数)下(down函数)移动,保证每个节点都小于等于左、右儿子,根节点为整个数据结构的最小值。此外,操作down()和up()都跟堆的层数有管,故这两种操作的时间复杂度都为O(logn)。(1)小根堆:每个点都小于等于左、右儿子,根节点为整个数据结构的最小值。(2)大根堆:每个点都大于等于左、右儿子,根节点为整个数据结构的最大值。第二行包含 n 个整数,表示整数数列。

2024-02-07 10:53:44 879 1

原创 KMP字符串(算法)

其中1串为[ 1, next[ j ] ],3串为[ j - next[ j ] + 1 , j ]。刚开始可能s[i]和P[j + 1](因为j的初始值为0,但是要注意字符串P和S排序都是从1开始的)一直不一样,那么j保持为0,i递增,直到s[i]第一次等于P[j + 1]。对next[ 3 ] :前缀 = { a , ab }—————后缀 = { c , bc}—————next[ 3 ] = 0;对next[ 1 ] :前缀 = 空集—————后缀 = 空集—————next[ 1 ] = 0;

2024-02-03 15:35:23 824 1

原创 栈和队列(用数组模拟栈和队列)

先进后出给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1−1。

2024-02-02 11:26:06 348

原创 链表(用数组模拟单链表和双链表)

单链表——>邻接表——>存储树和图··双链表——>优化某些问题用数组模拟链表会更快单链表 = 数据 + 指针通常会用头指针来标识一个单链表,头指针为NULL时表示一个空表。但是,为了操作方便,会在单链表的第一个结点之前附加一个结点,称为。头结点的数据域可以不设任何信息,也可以记录表长等信息。头结点的指针域指向线性表的第一个元素结点。如下图所示:头结点和头指针的区分:不管带不带头结点,头指针始终指向单链表的第一个结点,而那么单链表的初始化操作就是申请一个头结点,将指针域置空。

2024-02-01 11:05:56 1602 1

原创 双指针算法(最长连续不重复子序列)

i < n;i ++ )// 具体问题的逻辑常见问题分类:(1) 对于一个序列,用两个指针维护一段区间(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作算法思路:先通过暴力算法找到解题思路,接着观察 i 和 j 之间的单调关系,利用单调关系,可以将枚举的数量从 n^2 变成 n ,时间复杂度从O(n^2 )变成O(n)。给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

2024-01-27 21:43:33 362

原创 前缀和与差分

输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。首先让差分 b 数组中的 b[l] + c , a 数组变成 a[l] + c ,a[l+1] + c,,,,,, a[n] + c;然后我们打个补丁,b[r+1] - c , a 数组变成 a[r+1] - c,a[r+2] - c,,,,,,,a[n] - c;

2024-01-27 17:42:21 869

原创 高精度(加法&减法&乘法&除法)

数组为了进位表示方便,故将大整数的个位、十位、百位、千位、、、依次存入数组的第0、1、2、3、、、位中。(数组在末尾添加新的数比较简单运用pushback)具体在题目中可以用来存储大整数,因为自带函数,可以求长度。

2024-01-25 22:08:47 887 1

原创 二分(整数二分&浮点数二分)

两种模板其实记忆方法也很简单,首先都设置变量int mid = l + r >> 1,接着,根据 if 判断后,自己分析并写出 l / r 的改变,假如有 - 1,则mid = l + r >> 1要再 + 1,即改为 mid = l + r + 1 >> 1;故这两个整数二分的模板都一定会产生结果,但是产生的结果并不一定是正确结果,需要进行判断结果是否满足题意,否则为错误结果,即该题无解。总之,要比保留的小数多2。(没有单调性,也有可能可以二分),二分的本质并不是单调性,单调性和二分没有直接的关系。

2024-01-25 13:26:50 1766 1

空空如也

空空如也

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

TA关注的人

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