![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 70
码不停蹄的忧殇
编程菜鸡一枚
展开
-
让我再学废一次并查集
本文代码来自于第399题力扣题解,在这里利用图解的形式再现一次解题思路以及巩固一下并查集的相关知识。 这道题目用到了并查集的相关知识,关于并查集的内容,在之前的博客中有所提及,参考并查集,你学废了吗。 回归这道题本身,变量与变量之间存在倍数关系,变量与变量之间的倍数关系具有传递性,处理有传递性关系的问题,采用并查集的方法来进行处理,而对于变量之间的倍数关系,在并查集的合并与查询的操作来进行维护。 以示例1为例,说明求解过程。整个算法的过程分为三个过程:1.初始化并查集(初始化根节点原创 2021-01-07 10:12:52 · 166 阅读 · 0 评论 -
C++实现二叉树的四种遍历方式(建议背诵)
1.前序遍历(先序遍历) 二叉树的前序遍历按照根->左子树->右子树的顺序进行遍历。实现二叉树的前序遍历有递归和非递归版本的实现方法。前序遍历结果:ABDGHCEIFstruct TreeNode{ int val; TreeNode*left; TreeNode*right; TreeNode(int x):val(x),left(NULL),right(NULL){}};//前序遍历递归版本class Solution {public: void preor原创 2020-10-27 16:48:43 · 2130 阅读 · 0 评论 -
并查集(Union-Find),你学废了吗?
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。直接用一个实例来说明并查集相关的操作。 有如下图的结构,要判断图中是否有连通环的存在。 现在选取几条边,如下图红线所示,红线连接的两个数据之间可以建立树结构,因此选取这三条边之后可以画出两棵树结构,并将这两棵树的根节点合并,形成一棵树。我们可以注意到,此时1和3已经在此集合中且相关联,如果此时我们寻找2-4这条边,发现2和4的根节点都是3,说明他们两在同一个集合中,因此可以构成环。算法步骤原创 2020-06-08 17:50:19 · 318 阅读 · 0 评论 -
逻辑运算符的短路特性
对于逻辑运算符&&和||都不陌生,但是利用其短路特性可以作为执行语句的约束条件。以&&为例,对于A&&B这个表达式,如果A表达式返回False,那么A&&B已经确定为False,那么此时不会再去执行表达式B。同理,对于逻辑运算符||,对于表达式A||B,如果A表达式返回True,那么A||B已经确定为True,此时不会再去执行表达式B。利用这一特性,可以作为一个条件约束,代替if、while等语句。 下面的例题就很好的说明了这一点,题目原创 2020-06-02 10:28:27 · 1798 阅读 · 0 评论 -
Leetcode刷题笔记-1
因为疫情没法去学校,空余时间很多,正好学习下数据结构与算法,在leetcode上看看题,记录一下学到的一些新东西。1.关于整数反转的问题,这个不难,通过取整和取余运算就可以实现颠倒代码如下:当然也有其他的版本,这只是我的想法。int reverse(int x) { long res = 0; if (x<...原创 2020-03-13 22:05:15 · 154 阅读 · 0 评论 -
C++中如何获取一个二维数组的行和列
对于type Arr[][]形式的二维数组(其他形式的不适用,会出错),C++没有给出其行和列的接口函数,我们可以通过sizeof来求得行和列数sizeof(Arr[0][0])//一个元素占用的空间,sizeof(Arr[0])//一行元素占用的空间,sizeof(Arr)//整个数组占用的空间int size=sizeof(Arr)/sizeof(Arr[0][0]);//数组元素总...原创 2020-04-22 19:05:16 · 5563 阅读 · 0 评论 -
Vector数组总结
简介:Vector数组的特点:vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组,在数据结构中就相当于顺序储存的线性表,寻找元素非常快,但是插入元素的时间却很大(list是一个双向链表,在同一个位置插入大量的数据时速度很快,但是查找的速度就会慢很多)和普通数组一样可以通过下标索引来进行访问!与其它动态序列容器相比(deques,lists and forwar...原创 2020-02-19 16:58:44 · 5082 阅读 · 1 评论 -
C++内存分配方式详解
栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序...原创 2020-03-13 22:12:29 · 418 阅读 · 0 评论 -
C++complex复数类
复数是形如a+bi的数,复数由实部和虚部构成,在C++的模板库中由complex类,可以直接调用,包含在complex头文件中。原创 2020-03-31 20:21:40 · 9374 阅读 · 0 评论