数据结构
Prince_H_23
这个作者很懒,什么都没留下…
展开
-
数据结构-10 STL
Vector初始化数组初始化 int a[5] = {1,2,3,4,5}vector初始化 vector A[10] = {1,2,3,4,5}vector A(10, 1);二维数组初始化赋值vector<vector> f1(n, vector(m,0));常用函数排序:sort(nums.begin(), nums.end());排序:sort(nums.begin(), nums.end(), cmp);逆排:原创 2021-12-24 20:43:21 · 140 阅读 · 0 评论 -
数据结构-9 并查集
并查集AcWing挑战程序设计竞赛功能查询合并优化路径压缩避免退化:合并时候rank(高度)小的指向rank(高度)大的(有路径压缩就不用了)模板int par[MAX_N]int size[MAX_N]//初始化for(int i = 0; i < n; i++){ par[i] = i; //记录集合个数时候才用 size[i] = 1;}//查询int find(int x){ if(par[x] == x) return原创 2021-12-24 20:42:22 · 84 阅读 · 0 评论 -
数据结构-8 图论
算法模板来自AcWing最短路宫水三叶讲解1 图的存储有向图add1次,无向图add2次稀疏图(n m)用邻接表稠密图(n m^2)用邻接矩阵存在重边取最短的边1-1 邻接矩阵1-2 邻接表数组实现int N;vector<int> dot(N);vector<vector<int>> g;bool vis[N] = false;void add(int a, int b){ edges[a].push_back(b);}原创 2021-12-24 20:41:46 · 198 阅读 · 0 评论 -
数据结构-7 跳表
1206原创 2021-12-24 20:41:16 · 71 阅读 · 0 评论 -
数据结构-6 堆
堆(是一个完全二叉树:除最后一层,都是满的,最后一层从左向右排列)eg: 小根堆,每一个点小于左右儿子用一维数组存储, 左儿子2x, 右儿子2x+1下标从1开始操作代码插入一个数heap[++size] = x up(size)求集合中的最小值heap[1]删除最小值heap[1] = heap[size]; size–; down(1)删除任意一个元素heap[k] = heap[size]; size–; down[k]; up[k]修改任原创 2021-12-24 20:40:28 · 81 阅读 · 0 评论 -
数据结构-5 哈希表
集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率std::set红黑树有序否否O(logn)O(logn)std::multiset红黑树有序是否O(logn)O(logn)std::unordered_set哈希表无序否否O(1)O(1)映射底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率std::map红黑树key有序key不可重复key不可修改O(lo...原创 2021-12-24 20:40:00 · 185 阅读 · 0 评论 -
数据结构-4 字符串
详见:算法-字符串算法原创 2021-12-24 20:39:17 · 56 阅读 · 0 评论 -
数据结构-3 栈和队列
单调栈知乎pecco一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置vector<int> v;stack<int> S;for(int i = 0; i < n; i++){ while (!S.empty() && V[S.top()] < V[i]) { ans[S.top()] = i; S.pop(); } S.push(i);}原创 2021-12-24 20:38:20 · 243 阅读 · 0 评论 -
数据结构-2 链表
! head节点可能被改变时,设置虚拟头节点,返回dummyHead->next! 释放空间delete原创 2021-12-24 20:37:49 · 161 阅读 · 0 评论 -
数据结构-1 数组
...原创 2021-12-24 20:37:15 · 72 阅读 · 0 评论