![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Sunshine_xiaohao
这个作者很懒,什么都没留下…
展开
-
C++ reverse函数翻转个数的确定 两个参数的差即为翻转元素的个数!
刚才利用vector做反转链表的时候,reverse函数的使用卡了我一会。然后我测试了一下reverse。代码如下:#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){ vector<int> a; for(int i=0;i<10;i++) a.push_back(i); for(int i=原创 2021-04-09 20:35:01 · 235 阅读 · 0 评论 -
BFS学习笔记
写了三道BFS的基础题,有一道是一维的板子,有一道是二维的板子,还有一个是FloodFill的BFS实现。收获呢就是:1.写好条件2.打好标记3.标记数组的灵活运用,访问与没访问过的同时还可以记录距离等,即利用distance[]=-1判断未访问过板子:int bfs(PII/TIII start){ memset(st,false,sizeof st); queue<PII/TIII> q; q.push(start); st[start.x][start.y]=true;原创 2021-04-02 16:23:37 · 108 阅读 · 0 评论 -
DFS暴搜笔记
DFS重点是顺序,从1-n每个位置 选/不选递归搜索树:原创 2021-02-22 13:48:07 · 106 阅读 · 2 评论 -
c++ Strings substr的妙用
在补lc周赛的题,学到了字符串的substr函数,返回字符串从某个位置之后的子串,如果某位置 i>=s.size() ,则返回空串!贴上例题,贪心问题1754.构造字典序最大的合并字符串原创 2021-02-10 11:55:46 · 111 阅读 · 0 评论 -
区间合并
方法:1.将区间按左端点排序2.初始化 l , r 为第一个区间的左右端点,然后枚举剩下的区间。if(a[x].x<=r) //说明和上一个区间可以合并 r=a[x].y;else{ //说明上一个区间无法与其他任何区间合并了,记录下来 记录;//记录方法因题意而定 l=a[x].x ,r=a[x].y; //记录完后更新l.r的值} 3.不要忘记记录最后一个区间区间合并模板题区间合并例题1...原创 2021-02-09 22:20:57 · 99 阅读 · 0 评论 -
二分的作用
将寻找某个值的问题转化为判断某个值能不能成立的问题~原创 2021-02-09 21:27:32 · 384 阅读 · 0 评论 -
树状数组基础
树状数组:作用:①单点修改 ②快速区间查询与普通前缀和对比:普通前缀和查询是O(1)的,但是如果涉及修改,便是O(n)的复杂度lowbit(x)的含义:x的二进制表示末尾有k个零,则lowbit(x)=2^kint lowbit(int x){ return x & -x;}树状数组C[x] 表示 ( x-lowbit(x) , x ] 这段的和1.单点修改,即将原数组A[x]+v, C[x] 如何变化?void add(int x,int v){ for(int i=x;i原创 2021-02-06 17:43:11 · 84 阅读 · 0 评论 -
《啊哈!算法》解密QQ号——队列 queue解法 &解密回文——栈 stack解法
题意:读入9个数,从左至右依次输出一个数并删除,并将其后一个数放到队尾,重复直至队列为空。解法一(书上的解法):#include<cstdio>struct queue{ int a[100]; //用1-9 9个位置来存储9个数字 int head; int tail;};int main(){ struct queue q; for(int i=1;i<=9;i++){ scanf("%d",&q.a[i]); } q.head=1; q.ta原创 2020-07-27 09:40:02 · 233 阅读 · 0 评论