数据结构学习
文章平均质量分 66
数据结构的学习
「已注销」
前oi选手。
重庆市南开中学高2020级毕业生。
重庆大学计算机系2020级学生。
QQ1954486214欢迎添加讨论~
展开
-
数据结构学习之树状数组
文章目录一、单点修改区间查询lowbit单点修改区间查询二、区间修改单点查询差分数组差分数组的构建差分数组的应用区间修改单点查询三、二维树状数组 一、单点修改区间查询 lowbit int lowbit(int x) {return x&(-x)} 作用: 取出十进制数x二进制表示中由最低位往最高位方向的第一个1 如10的二进制为(1010)2(1010)_2(1010)2 取出由最低位往最高位方向的第一个1: (10)2(10)_2(10)2 即为数字2 这个时候我们如果将原数x减去这个原创 2021-03-08 19:18:54 · 132 阅读 · 0 评论 -
LeetCode 684 冗余连接【并查集】
一棵树多了一条边,找出这条边。 根据树的性质,连通无环无项的性质很容易发现: 挨个输入树的每条边时,最开始这条边的两个端点一定是没有连通的,如果连通,则成环,那么这条边就是多余的那条边。 class Solution { public: int f[1005]; void init() { for(int i = 1; i <= 1000; i++) f[i] = i; } int find(int x) { return f[x] == x ? x : f[x]=find(f原创 2021-02-22 18:07:55 · 88 阅读 · 0 评论 -
LeetCode 778 水位上升的泳池中游泳【并查集】
将每个坐标(xi,yi),xi、yi∈[0,n)(x_i,y_i),x_i、y_i\in[0,n)(xi,yi),xi、yi∈[0,n)看作一个点,计算每个坐标对应的id=xi∗n+yi+1id=x_i*n+y_i+1id=xi∗n+yi+1 将每个坐标的高度值单独保存下来,记录最大高度(也即最长时间)maxsizemax_{size}maxsize 从零开始枚举到最大高度,用并查集实现将当前可淹没的点连通,在每一次新高度下合并后,查看起始点和终点是否处于同一集合,如果属于,当前高度即为最小时原创 2021-03-01 19:39:11 · 153 阅读 · 0 评论 -
数据结构学习之并查集
由于博主并不是初次学习这些算法数据结构,甚至很多都是学了两三年的东西。 因此这些学习笔记更倾向于复习笔记,并不总会有非常细致的讲解,更多的是记录一般的实现思路和一些题目的分析思路。 文章目录一、基本操作1.初始化2.路径压缩3.合并4.求集合数量二、例题1.模板题:洛谷15512.模板题:LeetCode 5473.LeetCode 684 一、基本操作 1.初始化 void init() { for(int i = 1; i < N; i++) f[i] = i; } 2.路径压缩 in.原创 2021-02-22 17:54:57 · 148 阅读 · 0 评论 -
数据结构学习之栈队列链表
文章目录一、链表1.单向链表2.双向链表二、队列三、栈 一、链表 1.单向链表 单项链表应至少满足这样的功能: 1.O(1)O(1)O(1)添加元素 在链表末尾添加元素,移动tailtailtail指针,建立新节点,赋值。 2.O(n)O(n)O(n)插入元素 从链表头开始枚举,直到枚举到需要插入元素的位置。改变指针指向,插入元素。 3.O(n)O(n)O(n)删除元素 从链表头开始枚举,直到枚举到需要删除元素的位置。改变指针指向,删除元素。 4.枚举所有元素 从链表头开始枚举,直到末尾。 另外注意,单向链原创 2021-02-22 10:25:06 · 252 阅读 · 0 评论