- 博客(11)
- 收藏
- 关注
原创 acwing算法基础课——双链表
实现一个双链表,双链表初始为空,支持55种操作:在最左侧插入一个数; 在最右侧插入一个数; 将第kk个插入的数删除; 在第kk个插入的数左侧插入一个数; 在第kk个插入的数右侧插入一个数现在要对该链表进行MM次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第kk个插入的数并不是指当前链表的第kk个数。例如操作过程中一共插入了nn个数,则按照插入的时间顺序,这nn个数依次为:第11个插入的数,第22个插入的数,…第nn个插入的数。...
2022-04-02 16:28:54
188
原创 acwing算法基础课——单链表(数组模拟单链表)
实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数; 删除第kk个插入的数后面的数; 在第kk个插入的数后插入一个数。现在要对该链表进行MM次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第kk个插入的数并不是指当前链表的第kk个数。例如操作过程中一共插入了nn个数,则按照插入的时间顺序,这nn个数依次为:第11个插入的数,第22个插入的数,…第nn个插入的数。输入格式第一行包含整数MM,表示操作次数。接下...
2022-03-28 00:39:38
221
原创 acwing算法基础课——区间合并
给定 nn 个区间 [li,ri][li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1,6]。输入格式第一行包含整数 nn。接下来 nn 行,每行包含两个整数 ll 和 rr。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。数据范围1≤n≤1000001≤n≤100000,−109≤li≤ri≤109输入样例:
2022-03-25 13:15:19
331
原创 acwing算法基础课——双指针算法
AcWing 799. 最长连续不重复子序列给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3思路:使用双指针算法,根据观察发现,当使用i,j两个快慢指针表示当前的指针...
2022-03-20 01:26:12
196
原创 acwing算法基础课——差分
核心操作:void insert(int l, int r, int d){ b[l] = b[l] + d; b[r + 1] = b[r + 1] - d;}输入一个长度为nn的整数序列。接下来输入mm个操作,每个操作包含三个整数l,r,cl,r,c,表示将序列中[l,r][l,r]之间的每个数加上cc。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数nn和mm。第二行包含nn个整数,表示整数序列。接下来mm行,...
2022-03-14 23:51:19
257
原创 acwing算法基础课——子矩阵的和
输入一个 nn 行 mm 列的整数矩阵,再输入 qq 个询问,每个询问包含四个整数 x1,y1,x2,y2x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,qn,m,q。接下来 nn 行,每行包含 mm 个整数,表示整数矩阵。接下来 qq 行,每行包含四个整数 x1,y1,x2,y2x1,y1,x2,y2,表示一组询问。输出格式共 qq 行,每行输出一个询问的结果。数据范围1...
2022-03-12 22:48:39
443
原创 acwing算法基础课——前缀和
输入一个长度为 nn 的整数序列。接下来再输入 mm 个询问,每个询问输入一对 l,rl,r。对于每个询问,输出原序列中从第 ll 个数到第 rr 个数的和。输入格式第一行包含两个整数 nn 和 mm。第二行包含 nn 个整数,表示整数数列。接下来 mm 行,每行包含两个整数 ll 和 rr,表示一个询问的区间范围。输出格式共 mm 行,每行输出一个询问的结果。数据范围1≤l≤r≤n1≤l≤r≤n,1≤n,m≤1000001≤n,m≤100000,−100...
2022-03-12 15:44:44
127
原创 acwing算法基础课——二分做题笔记
数的三次方根给定一个浮点数 nn,求它的三次方根。输入格式共一行,包含一个浮点数 nn。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留 66 位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000#include<iostream>using namespace std;int main(){ double n; scanf("%lf", &n); doub
2022-03-11 15:18:21
173
原创 acwing算法基础课学习笔记——二分
整数二分题目描述给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”.
2022-03-11 13:21:14
248
原创 acwing算法基础课学习心得——快速排序
快速排序基于分治先随机找要排序的数中的一个,然后把大于这个数的放在左边,小于的放在右边,然后递归实现。模板如下void quick_sort(int arr[], int i,int j){ if (i > j) return; int l = i - 1, r = j + 1; int k = arr[i]; while (l < r)//分别从左右两边与k相比较,比较后交换位置 { do l++; while (arr[l] <= k); do r--
2022-01-23 02:14:08
443
原创 acwing算法基础课学习心得-位运算
原码,反码与补码:补码等于反码加一假设a=10,则a转化为二进制a=1010.a的原码 a=1010a的反码 ~a=0101a的补码 -a=~a+1=0110//将一个数用二进制表示 #include<iostream>using namespace std;int main(){ int n=10; for(int i=3;i>=0;i--) { cout<<(n>>i&1)<<' ';
2022-01-18 01:42:46
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人