算法刷题(基础模板应用)
文章平均质量分 51
一些经典算法题目
_刘小雨
一枚普通而~~~
展开
-
acwing 859. Kruskal算法求最小生成树
由V中的全部n个顶点和E中n−1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V,E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。我们分析上面的步骤在图中的点不连通,然后直接的加入的话,用并查集数据结构应该是最快的。......原创 2022-07-22 17:08:03 · 1510 阅读 · 0 评论 -
acwing 858. Prim算法求最小生成树
由V中的全部n个顶点和E中n−1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V,E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小。......原创 2022-07-22 16:56:47 · 1324 阅读 · 0 评论 -
acwing 860. 染色法判定二分图
给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。输出格式如果给定图是二分图,则输出Yes,否则输出No。数据范围1≤n,m≤10输入样例4413142324输出样例Yes。......原创 2022-07-21 22:22:50 · 1400 阅读 · 0 评论 -
acwing 861. 二分图的最大匹配(匈牙利算法)
假设现在有一群男同胞和女同胞,而你是这群人中的红娘,现在手上有N1个男同胞,N2个个女同胞,每个人可能对多名异性有好感,有好感在这里用边来表示。二分图的匹配给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。给定一个二分图,其中左半部包含n1个点(编号1∼n1),右半部包含n2个点(编号1∼n2),二分图共包含m条边。二分图的最大匹配所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。.........原创 2022-07-19 21:34:32 · 1786 阅读 · 0 评论 -
acwing 872. 最大公约数
给定n对正整数ai,bi,请你求出每对数的最大公约数。接下来n行,每行包含一个整数对ai,bi。输出共n行,每行输出一个整数对的最大公约数。第一行包含整数n。原创 2022-07-19 10:54:30 · 1592 阅读 · 0 评论 -
acwing 871. 约数之和
因为拆开任何一项,都是一个约数,相加便是约数之和。(这个公式是将所有约数相加后提取公因式得到的)给定n个正整数ai,请你输出这些数的乘积的约数之和,答案对10。1、在每次输入一个数时,分解其质因数,将其出现的次数保存起来;输出一个整数,表示所给正整数的乘积的约数之和,答案需对10。2、遍历保存质因数的表,将每个质因数带入公式中。接下来n行,每行包含一个整数ai。这里的代码实现存储底数和指数部分跟。一样,只是求解目标变了。第一行包含整数n。.........原创 2022-07-19 10:42:51 · 1648 阅读 · 0 评论 -
acwing 870. 约数个数
先把原数分解为质因数,最后把每一个数的指数累加即可。从a1一直分解到an,由于a的数据过大,此处用哈希表进行存储。输出一个整数,表示所给正整数的乘积的约数个数,答案需对109+7取模。给定n个正整数ai,请你输出这些数的乘积的约数个数,答案对10。*3,再用各个质数的指数加一后再相乘即为此数的约数个数,即为。24的约数为1,2,3,4,6,8,12,24。接下来n行,每行包含一个整数ai。第一行包含整数n。.........原创 2022-07-19 10:24:59 · 1722 阅读 · 0 评论 -
acwing 869. 试除法求约数
给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。因为d|n时,n/d|n也行;其中d表示因子,n表示一个数,|表示整除。输出共n行,其中第i行输出第i个整数ai的所有约数。整理得d......原创 2022-07-19 10:15:13 · 1513 阅读 · 0 评论 -
acwing 868. 筛质数
方法3线性筛选法保证了每个合数被最小质因子筛选出来的,只筛选了一次,所以是线性的。方法2埃氏筛选法用质数去筛选合数,但是不能保证每个数筛选了几次。给定一个正整数n,请你求出1∼n中质数的个数。直接通过枚举1~n的质数,然后标记一个数的倍数即可。共一行,包含一个整数,表示1∼n中质数的个数。方法1朴素版本筛质数暴力枚举。共一行,包含整数n。...............原创 2022-07-19 08:56:53 · 1424 阅读 · 0 评论 -
acwing 867. 分解质因数
对于每个正整数ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。给定n个正整数ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。的质因子,这里的p1......原创 2022-07-19 08:32:18 · 1583 阅读 · 0 评论 -
acwing 866. 试除法判定质数
共n行,其中第i行输出第i个正整数ai是否为质数,是则输出Yes,否则输出No。但是,这个sqrt函数底层运行很慢,每次执行这行代码时,需要运算一次,下面看看其他方法。,原理跟上面的一样,但这里不会出现数据溢出的风险,推荐使用这种。,本质上跟上面差不多,但是这里可能会出现溢出的风险,不推荐。其中d表示因子,n表示一个数,|表示整除。给定n个正整数ai,判定每个数是否是质数。接下来n行,每行包含一个正整数ai。故,在找因子时候,只需要遍历根号n部分即可。......原创 2022-07-19 00:54:58 · 1428 阅读 · 0 评论 -
算法与数据结构---图论(最短路总结)
INF = 1e9 (无穷大)Dijkstra-朴素O(n^2)题目链接Dijkstra-堆优化O(mlogm)题目链接Bellman_fordO(nm)题目链接Spfa O(m)~O(nm)题目链接Floyd O(n^3)题目链接原创 2022-07-14 15:33:06 · 2174 阅读 · 0 评论 -
acwing 854. Floyd求最短路
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定 k 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数 n,m,k。接下来 m 行,每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。接下来 k 行,每行包含两个整数 x,y,表示询问点 x 到点 y 的最短距离。输出格式共 k 行,每行输出一个整数,表示原创 2022-07-14 14:44:51 · 2270 阅读 · 0 评论 -
acwing 851. spfa求最短路 + acwing 852. spfa判断负环
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。数据保证不存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 。学到spfa 算法,我们需要将它与之前的算法比较一下, 为什么呢, 是因为s原创 2022-07-14 11:16:59 · 2387 阅读 · 0 评论 -
acwing 853. 有边数限制的最短路
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出 impossible。注意:图中可能 存在负权回路 。输入格式第一行包含三个整数 n,m,k。接下来 m 行,每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。点的编号为 1∼n。输出格式输出一个整数,表示从 1 号点到 n 号点的最多经过 k 条边的最短距离。如果不存在满足条件的路径,原创 2022-07-13 22:25:49 · 2369 阅读 · 0 评论 -
acwing 850. Dijkstra求最短路(二)堆优化版本
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。直接之前朴素版本的修改如何判断稠密图还是稀疏图:稠密图: 边 等于 点数量的平方稀疏图 : 边和点的数量差原创 2022-07-13 15:42:16 · 2138 阅读 · 0 评论 -
acwing 849. Dijkstra求最短路(一) 朴素版本
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。数据范围1≤n≤500,1≤m≤105,图中涉及边长均不超过10000。伪代码表示:下面有一个例子示范:原创 2022-07-13 11:34:30 · 2263 阅读 · 0 评论 -
acwing 4492. 减法操作
给定一个整数 n,执行如下算法:如果 n=0,则结束算法。找到 n 的最小质因子 d。令 n 减去 d 并跳转步骤 1。请你计算,在算法执行的过程中,一共进行了多少次减法操作。输入格式一个整数 n。输出格式一个整数,表示减法操作的次数。数据范围前三个测试点满足 2≤n≤5。所有测试点满足 2≤n≤1010。看题目数据范围,此题是一道O(根号n) 题目此题考查一个思维性过程算法步骤:注意:所有变量必须都开long long当时就因为这个没 AC而且还 TLE,让我以为是算法的问题……cod原创 2022-07-12 22:05:25 · 1561 阅读 · 0 评论 -
acwing 4491. 数组操作
给定一个长度为 n 的整数数组。数组中只包含 1 和 −1。你需要对该数组进行如下操作:计算该数组中所有元素的和 s。计算该数组的最小前缀和 x。输出 s−x 的值。注意:数组的最小前缀和 x 有可能为负。对于任意数组,其前 0 个元素的前缀和为 0。输入格式第一行包含整数 n。第二行包含 n 个整数,表示给定数组。输出格式一个整数,表示 s−x 的值。数据范围前四个测试点满足 1≤n≤5。所有测试点满足 1≤n≤100,数组中只包含 1 和 −1。此题比较简单,考查前缀和问题,具体可原创 2022-07-12 21:45:01 · 1556 阅读 · 0 评论 -
acwing 845. 八数码
在一个 3×3 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让 x 先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1 2 3 1 2 3x 4 6 4 x 6原创 2022-07-09 11:07:59 · 1979 阅读 · 0 评论 -
acwing 848. 有向图的拓扑序列
给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 (x,y)。输出格式共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。否则输出原创 2022-07-07 22:27:47 · 2017 阅读 · 0 评论 -
acwing 847. 图中点的层次(BFS)
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。所有边的长度都是 1,点的编号为 1∼n。请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 a 和 b,表示存在一条从 a 走到 b 的长度为 1 的边。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。数据范围1≤n,m≤105输入样例:4 51 22 33 41 31 4输出样例:1我们知道广度优原创 2022-07-07 20:46:39 · 2134 阅读 · 0 评论 -
acwing 846. 树的重心
给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数 n,表示树的结点数。接下来 n−1 行,每行包含两个整数 a 和 b,表示点 a 和点 b 之间存在一条边。输出格式输出一个整数 m,表示将重心删除后,剩余各个连通块中点数的最大值。数据范围1≤n≤105输入样例91 2原创 2022-07-07 16:58:40 · 3310 阅读 · 0 评论 -
树与图的深度优先遍历模版原理
树是一个特殊的图 (无环连通)所以只用知道图就行了图 : 又分为 有向图 和 无向图图的存储有向图:(a–>b)邻接表的存储代码实现:图的遍历深度优先遍历: 一条路走到结束, 然后在回溯看有没有其他节点没有遍历深度优先遍历代码实现:.........原创 2022-07-06 17:49:36 · 1906 阅读 · 0 评论 -
acwing 843. n-皇后问题
n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n,请你输出所有的满足条件的棋子摆法。输入格式共一行,包含整数 n。输出格式每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。注意:行末不能有多余空格。输出方案的顺序任意,只要不重复且没有遗漏即可。这题也是DFS,原创 2022-07-06 11:13:40 · 1945 阅读 · 0 评论 -
DFS和BFS概念及实践+acwing 842 排列数字(dfs) +acwing 844. 走迷宫(bfs)
DFS (深搜), 也有说就是递归的执着: 一直搜到底,然后回溯下一个节点数据结构 : stack (这里的栈,实际上是编译器内部的栈, 所以说也可以看成递归, 递归内部也是调用编译器内部栈)空间:O(h) h: 是高度不具有最短路性质(思路比较奇怪的,对空间要求比较高的)重要概念: 回溯,剪枝BFS (宽搜)稳重:一层一层搜索数据结构 : queue, 空间:O(2h) h: 是高度具有最短路性质(当每条路权重是1)DFS 例题讲解:可以用来理解递归的思想acwing 8原创 2022-07-05 17:19:07 · 2273 阅读 · 0 评论 -
acwing 3302. 表达式求值
给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 231−1。题目中的整除是指向 0 取整,也就是说对于大于 0 的结果向下取整,例如 5/3=1,对于小于 0 的结果向上取整,例如 5/(1−4)=−1原创 2022-07-02 22:32:20 · 2442 阅读 · 0 评论 -
hash 表的概念及应用
常见用于将较大范围的数据,但是通常是离散化的,将大范围的数据映射到小范围的题型。之间讲解的区间和就是这类题型。比如L取值范围是[-109 - 109] , 我们需要映射到105 范围内通用做法是:一般在哈希表中,只要实现的操作是添加和查找, 如果真需要实现删除,应该是在相应标记位上做一个标记寻找一个大于100000 的质数code:1.2. 开放寻址法另外的开放寻址法在这篇文章中有介绍:https://blog.csdn.net/qq_39486027/article/details/12509原创 2022-07-02 15:46:35 · 2685 阅读 · 0 评论 -
acwing 838. 堆排序 (手写一个堆)
如何手写一个堆?堆堆是一个完全二叉树(最后一层节点是左右依次排布的)小根堆为例每一个节点都小于等于父节点, 根节点就是最小值。实现:down(x) : 如果把一个点的值变大了,就需要向下移动;跟叶子节点比较up(x) : 如果把一个点的值变小了,就需要向上移动;跟父节点比较如何通过这两个操作实现前面的5个因素呢 heap 表示堆,size表示大小输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。输入格式第一行包含整数 n 和 m。第二行包含 n 个整数,表示整数数列。数据范围1≤m≤n≤原创 2022-06-19 20:44:59 · 3870 阅读 · 0 评论 -
acwing 837. 连通块中点的数量 (并查集维护额外信息---集合数量)
在上一节写了,并查集中,主要有两个功能,现在探索一下,并查集能不能保存额外的信息呢回答是可以的哈并查集保存额外的信息: 这里指的是保存每个集合的数量。给定一个包含 n 个点(编号为 1∼n)的无向图,初始时图中没有边。现在要进行 m 个操作,操作共有三种:C a b,在点 a 和点 b 之间连一条边,a 和 b 可能相等;Q1 a b,询问点 a 和点 b 是否在同一个连通块中,a 和 b 可能相等;Q2 a,询问点 a 所在连通块中点的数量;输入格式第一行输入整数 n 和 m。接下来 m 行,每原创 2022-06-19 17:01:31 · 3391 阅读 · 0 评论 -
acwing 836. 合并集合 (并查集)
并查集功能:近乎 O(1)如果上述两个功能用暴力做法:将两个集合合并这时暴力做法就需要将小集合合并到大集合中,操作效率低,这里可以用并查集优化并查集原理:每一个集合用一颗树来维护。有以下规定。问题1 :如何判断树跟 : 问题2 :如何求x的集合编号 : , 只要不是树根,一直往上走问题3 : 如何合并两个集合 : 根节点加一条线即可,p[x] 是x集合编号,p[y] 是y的集合编号。.并查集还有一个优化:当集合中的一个点x 从根节点需要往下查找3次,查找第一遍后,可以修改这条原创 2022-06-19 16:31:10 · 3227 阅读 · 0 评论 -
acwing 835. Trie字符串统计
Trie 树 : 高效地存储和查找字符串集合的数据结构。如果想在trie 中保存下面一组字符串,原理如下:abcdef、abdef、aced、bcdf、bcff、cdaa、bcdc存储:一般来说,会在所有结尾的单词标记一下,不然在有可能重复的地方找不到该单词。查找:直接进行一层一层下来找,如果有在trie树中以查找字符串结束的字符,则true,反之,false。维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,输入的原创 2022-06-19 15:07:03 · 3246 阅读 · 0 评论 -
KMP算法理解(超简洁-易懂代码)
KMP算法直接利用双指针进行循环判断怎么去优化它一般情况:原理: 需要找到最少移动几位,才能保证移动后(最下面的红线)前缀 和之前短串(中间红线)后缀{以跟长串不匹配的字符为界限}现在就需要预处理一个短串中以每个子串结束的 前缀和后缀相等的最长大小是多少。这就是KMP中最核心的next 数组。以 为例;表示的是 p字符串数组中是以i 为终点的子串 p[1~j] = p[i - j + 1, i] 是相等的现在重新开始上面的分析:假设: 当长串移动到i 位置和短串不匹配了, 对应下图就是原创 2022-06-14 21:02:23 · 6470 阅读 · 0 评论 -
acwing 154 单调队列(及其应用, 滑动窗口)
给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。输入格式输入包含两行。第一行包含两个整数 n 和 k,分别代表数组长度和滑动窗口的长度。第二行有 n 个整数,代表数组的具体数值。同行数据之间用空格隔开。输出格式输出包含两个。第一行输出,从左至右,每个位置滑原创 2022-06-12 22:29:58 · 3436 阅读 · 0 评论 -
acwing 830. 单调栈( 外加应用)
给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。求每个数左边比它小的数,没有就是-1这里是单调栈用的场景 【在leetcode 中接雨水题目就有应用】思路:没加入一个数后,需要判断这个数和前面数比较,如果比前面的数大,那么永远都不会出现(因为是向后遍历的,那么下一个数原创 2022-06-12 21:54:27 · 3136 阅读 · 0 评论 -
acwing 829. 模拟队列(数组实现)
实现一个队列,队列初始为空,支持四种操作:push x – 向队尾插入一个数 x;pop – 从队头弹出一个数;empty – 判断队列是否为空;query – 查询队头元素。现在要对队列进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其中,原创 2022-06-12 21:13:25 · 3287 阅读 · 0 评论 -
acwing 828. 模拟栈(数组实现)
题目描述:实现一个栈,栈初始为空,支持四种操作:push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。现在要对栈进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其原创 2022-06-12 21:06:28 · 3183 阅读 · 0 评论 -
acwing 827. 双链表 (数组实现)
一般优化某些问题 使用前提:(0 表示head 节点, 1 表示tail 节点)实现双链表实现一个双链表,双链表初始为空,支持 5 种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k 个插入的数删除;在第 k 个插入的数左侧插入一个数;在第 k 个插入的数右侧插入一个数现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插原创 2022-06-12 20:40:32 · 3180 阅读 · 0 评论 -
acwing 826. 单链表(数组实现)
一般在邻接表中使用用途: 1. 存储图 和 树图解: e 数组存储链表节点中的值, ne 数组存储的节点中next指针, 空节点的next 规定为-1.相关题目:实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数原创 2022-06-12 20:11:03 · 2850 阅读 · 0 评论 -
acwing 2816. 判断子序列
给定一个长度为 n 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。请你判断 a 序列是否为 b 序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5} 的一个子序列。输入格式第一行包含两个整数 n,m。第二行包含 n 个整数,表示 a1,a2,…,an。第三行包含 m 个整数,表示 b1,b2,…,bm。输出格式如果 a 序列是 b 序列的子序列,输出一行 Yes。否则,输出 No。原创 2022-06-12 10:34:24 · 2942 阅读 · 0 评论