数据结构
文章平均质量分 73
数据结构
xiongyuqing
看见我请叫我学英语
展开
-
数据结构基础-并查集
并查集 - xiongyuqing - 博客园 (cnblogs.com)并查集从名字上来看就是 合并 和 查找 的 集合。对于一个全集 UUU 来说,并查集就是将 UUU 划分为几个不相交的子集,并对这些子集中的元素进行管理,主要实现下面两个功能:查找: 给定一个元素,问这个元素属于哪一个集合?合并: 给定两个元素(它们所属的集合不同)或给定两个集合,将这两个不相交的集合合并。考虑暴力做法:例如这几个集合{1,2,3},{4,5},{6};如果需要对其中的元素进行查找和集合合并,我们可能会这样原创 2021-09-06 17:35:31 · 135 阅读 · 0 评论 -
数据结构基础-单调队列
单调队列 - xiongyuqing - 博客园 (cnblogs.com)字面意思:队列是单调的,根据题目要求队列保持单调减或单调增,用以优化某种问题如果我们要求每一个滑动窗口内的最大值和最小值,对于一个长度为 n 的序列,窗口大小为 k 来说,暴力做法为:枚举每一个窗口,遍历每一个窗口的值取最大值或最小值for(int i = k - 1; i < n; ++ i){ ans = a[i]; for(int j = i; j > i - k; --j)原创 2021-08-04 17:51:43 · 169 阅读 · 0 评论 -
数据结构基础-单调栈
单调栈 - xiongyuqing - 博客园 (cnblogs.com)字面意思上理解,栈内元素是单调的,根据题目要求可能是单调递增或递减的对于一个长度为 n 的序列,如果要求左边第一个比 x 小的数暴力做法:for(int i = 0; i < n; ++ i){ for(int j = i - 1; j >= 0; --j) { if(a[j] < a[i]) { ...; b原创 2021-08-04 08:43:41 · 114 阅读 · 0 评论 -
数据结构基础-栈
栈 - xiongyuqing - 博客园 (cnblogs.com)模拟栈栈的特点:先进后出数组模拟栈的方法:tt 指针指向栈顶插入:tt 指针++弹出:tt 指针–判断栈空:tt == 0 ?询问栈顶元素:stk[tt]例题828. 模拟栈 - AcWing题库#include <iostream>#include <string>using namespace std;const int N = 1e5 + 5;int stk[N], tt;原创 2021-08-03 19:34:56 · 206 阅读 · 0 评论 -
数据结构基础-单链表
单链表 - xiongyuqing - 博客园 (cnblogs.com)单链表采用动态链表的方式:struct Node{ int val; Node *next;}new Node(); // 非常慢会非常慢,在算法竞赛中常常采用数组模拟链表,也叫静态链表head:表示头节点下标e[N]: 每个节点的值ne[N]:每个节点的下一个节点编号(下标)例如下面的链表:初始化// head:表示头节点的下标// e[i]: 表示第i个节点的值// ne[i]:原创 2021-08-02 22:12:48 · 208 阅读 · 0 评论 -
数据结构基础-双链表
每个节点有两个指针,一个指向下一个节点,一个指向前一个节点。在代码实现中使用左节点,右节点描述初始化e[N]:表示节点的值l[N]:表示左指针指向的节点r[N]:表示右指针指向的节点idx:已经使用过的节点编号(当前正在访问的节点编号)0 号点是头节点head1 号点是尾节点tailint e[N], l[N], r[N], idx;// 初始化void init(){ // 0 表示左端点,1表示右端点 r[0] = 1; l[1] = 0; idx =原创 2021-08-02 22:08:03 · 279 阅读 · 0 评论