
算法学习
文章平均质量分 59
数据结构以及算法 准备笔试机试以及面试题
cwtnice
切莫胸怀大志,却又虚度光阴
展开
-
AcWing 848. 有向图的拓扑序列
拓扑排序、BFS原创 2022-10-31 10:50:47 · 368 阅读 · 0 评论 -
AcWing 854. Floyd求最短路
Floyd算法原创 2022-10-31 09:57:52 · 236 阅读 · 0 评论 -
AcWing 850. Dijkstra求最短路 II
图的邻接表存储、单源最短路径、堆优化版Dijkstra算法原创 2022-10-28 14:36:54 · 832 阅读 · 0 评论 -
Acwing 849. Dijkstra求最短路 I
单源最短路、dijkstra模板原创 2022-05-17 17:21:33 · 277 阅读 · 0 评论 -
AcWing 859. Kruskal算法求最小生成树
最小生成树、kruskal算法原创 2022-10-27 15:08:27 · 151 阅读 · 0 评论 -
AcWing 858.Prim算法求最小生成树
最小生成树、prim算法原创 2022-10-27 11:24:23 · 145 阅读 · 0 评论 -
AcWing 838.堆排序
堆排序的应用原创 2022-10-24 15:11:48 · 634 阅读 · 0 评论 -
【AcWing_算法基础课】第k个数
快速选择原创 2022-05-25 23:44:42 · 126 阅读 · 0 评论 -
滑动窗口(单调队列)
原题链接: AcWing 154.滑动窗口关键词: 单调队列给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。窗口位置最小值最大值1 3 -1 -3 5 3 6 7-131 3 -1 -3 5 3 6 7-331 3 -1 -3 5 3 6 7-351 3原创 2021-09-18 15:37:30 · 184 阅读 · 0 评论 -
单调栈
原题链接: AcWing 830.单调栈关键词: 单调栈给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2思路:用数组模拟单调栈原创 2021-08-31 16:12:01 · 174 阅读 · 0 评论 -
模拟队列(数组模拟)
原题链接: AcWing 829.模拟队列关键词: 队列、数组模拟实现一个队列,队列初始为空,支持四种操作:push x – 向队尾插入一个数 x;pop – 从队头弹出一个数;empty – 判断队列是否为空;query – 查询队头元素。现在要对队列进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对原创 2021-08-31 15:24:11 · 236 阅读 · 0 评论 -
模拟栈(数组模拟)
原题链接: AcWing 828.模拟栈关键词: 栈、数组模拟实现一个栈,栈初始为空,支持四种操作:push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。现在要对栈进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 emp原创 2021-08-30 12:10:11 · 178 阅读 · 0 评论 -
静态 双链表(数组模拟)
原题链接: AcWing 827.双链表关键词: 双链表、数组模拟实现一个双链表,双链表初始为空,支持 5 种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k 个插入的数删除;在第 k 个插入的数左侧插入一个数;在第 k 个插入的数右侧插入一个数现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2原创 2021-08-23 22:38:26 · 128 阅读 · 0 评论 -
静态 单链表(数组模拟)
原题链接: AcWing 826.单链表关键词: 单链表、模拟实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。输入格式第一行包含整数原创 2021-08-21 17:07:13 · 159 阅读 · 0 评论 -
【AcWing_算法基础课】逆序对的数量
归并排序应用原创 2021-08-17 00:27:24 · 847 阅读 · 0 评论 -
区间合并模板题
原题链接: AcWing 803.区间合并关键词: 区间合并给定 n 个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。输入格式第一行包含整数 n。接下来 n 行,每行包含两个整数 l 和 r。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。数据范围1≤n≤100000,−109≤li≤ri≤109输入样例:51 22 45 67 8原创 2021-08-14 22:22:28 · 362 阅读 · 0 评论 -
区间和 : 离散化 + 前缀和
原题连接: AcWing 802. 区间和关键词: 保序离散化模板题、前缀和假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m 行,每行包含两个整数 l 和 r。输出格式共 m 行,每行输出一个询问中所求的区间内原创 2021-08-11 21:24:35 · 297 阅读 · 0 评论 -
字符串题目杂记
字符串处理相关题目笔记原创 2021-08-08 15:47:05 · 187 阅读 · 0 评论 -
【AcWing_算法基础课】高精度:加减乘除
高精度加减乘除模板原创 2021-08-01 15:20:58 · 207 阅读 · 0 评论 -
【AcWing_算法基础课】差分矩阵
二维差分模板题原创 2021-07-11 15:34:40 · 233 阅读 · 0 评论 -
【AcWing_算法基础课】差分
一维差分模板题原创 2021-07-08 20:10:11 · 222 阅读 · 0 评论 -
【AcWing_算法基础课】子矩阵的和
二维前缀和模板题原创 2021-07-01 16:51:29 · 571 阅读 · 0 评论 -
【AcWing_算法基础课】一维前缀合
一维前缀和模板题原创 2021-06-29 20:24:39 · 134 阅读 · 0 评论 -
二进制中1的个数
原题连接: AcWing 801. 二进制中1的个数关键词: 位运算题目大意:输出给定数n的二进制表示中 1 的个数原创 2021-06-26 12:25:24 · 83 阅读 · 0 评论 -
判断子序列
原题链接: AcWing 2816. 判断子序列关键词: 双指针题目大意:判断序列a是否是序列b的子序列原创 2021-06-20 14:13:10 · 448 阅读 · 0 评论 -
数组元素的目标和
原题链接:AcWing 800. 数组元素的目标和关键词: 双指针题目大意:给出两个按增序排列的序列,并给出目标值x,找到两个序列中元素和为x的数的下标原创 2021-06-20 13:57:15 · 259 阅读 · 0 评论 -
最长连续不重复子序列
原题链接: AcWing 799. 最长连续不重复子序列关键词: 双指针模板题目给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。原创 2021-06-16 10:09:34 · 2614 阅读 · 3 评论 -
直接插入排序 —— 最简单的插入类排序
学习资料:《算法笔记》直接插入排序(Straight Insertion Sort)是将一个个元素插入有序部分的过程。描述:对于一个序列A[1]~A[n],令i从2开始枚举,循环n-1趟操作。例如,当进行到第 j 趟时,此时在A[ j ]之前的A[ 1 ] ~ A[ j-1 ]已经有序,那么A[ j ]就从后往前枚举已有序部分找某个位置,使得当A[ j ]插入后(有序部分在插入位置及其后面的元素会往后移一位),A[ 1 ] ~ A[ j ]有序。初始有序部分长度为1,每执行一趟使得有序部分长度+1原创 2021-05-11 09:57:21 · 173 阅读 · 0 评论 -
递增顺序搜索树、二叉树中和为某一值的路径
关键词: 树的遍历、DFS原创 2021-04-25 20:56:44 · 107 阅读 · 0 评论 -
旋转数组的最小数字、搜索旋转排序数组 II
用二分找到旋转数组中最小的数 / 是否存在某数原创 2021-04-24 16:02:33 · 103 阅读 · 0 评论 -
简单选择排序 —— 最简单的交换类排序
参考资料: 《算法笔记》选择排序(select sort)是一种简单直观的排序算法。原理:首先在未排序序列中找到最小(大)元素,与未排序序列中的第一个元素 交换 ,这时候已排序序列长度+1, 未排序序列长度-1。然后,再从剩余未排序元素中继续寻找最小(大)元素,同样和未排序序列的第一个元素交换。以此类推,直到所有元素均排序完毕。算法描述:以升序排序为例对于一个数组A中的元素:A[1]~A[n],令i从1到n来 循环n趟 ,每趟的待排序区间是[i, n],找到区间中的最小元素(比如说是A[min原创 2021-04-20 15:36:12 · 492 阅读 · 0 评论 -
PAT B1009 说反话
将单词倒序输出。hello world变world hello原创 2021-04-20 11:04:18 · 63 阅读 · 0 评论 -
进制转换 、PAT B1022 D进制的A+B
将一个P进制数转化为Q进制数原创 2021-04-20 09:58:31 · 123 阅读 · 0 评论 -
数组去重、删除有序数组中的重复项 II
数组去重。重复元素最多保留两个的数组去重。原创 2021-04-18 19:44:54 · 590 阅读 · 0 评论 -
位1的个数、不用加减乘除做加法
求一个无符号整数中1的个数。不用加减乘除做加法原创 2021-04-17 16:12:58 · 110 阅读 · 0 评论 -
丑数
丑数 : 只包含质因数 2、3 和/或 5 的正整数。1.判断是否是丑数2.求第n个丑数原创 2021-04-17 14:54:00 · 248 阅读 · 0 评论 -
PAT B1036 跟奥巴马一起编程
输出一个由n个字符组成的正方形原创 2021-04-14 09:57:46 · 107 阅读 · 0 评论 -
找出游戏的获胜者、招聘
约瑟夫环问题原创 2021-04-11 15:30:58 · 233 阅读 · 0 评论 -
后缀表达式求值、中缀表达式求值、中缀表达式转后缀表达式
中缀、后缀表达式求值,中缀转后缀原创 2021-04-10 17:09:21 · 698 阅读 · 0 评论 -
旋转
题目链接: AcWing 3174.旋转关键词: 模拟图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。我们用一个 n×m 的二维数组来表示一个图片,例如下面给出一个 3×4 的图片的例子:1 3 5 79 8 7 63 5 9 7这个图片顺时针旋转 90 度后的图片如下:3 9 15 8 39 7 57 6 7给定初始图片,请计算旋转后的图片。输入格式输入的第一行包含两个整数 n 和 m,分别表示行数和列数。接下来 n 行,每行 m 个整数原创 2021-03-31 23:37:48 · 127 阅读 · 0 评论