C语言
程序员迪迦
【我是谁?】本人23届双非普本毕业,在互联网寒冬中通过秋招收到多家大厂的录用offer:快手、米哈游、京东、滴滴等,经历过几十次的大厂面试,实习和秋招面试经验充足。【目的是?】在我的成长过程中,许多前辈大佬帮助过我,我也真诚的希望能给大家带来一些帮助,关注我,进大厂不迷路!
展开
-
File Transfer(并查集的应用)
对于并查集的原理和应用,主要有三点重点需要理解记忆。 集合的表示 按秩归并(可以最小化堆的树高) 路径压缩(再寻找父节点时无需进行循环,一步到位) 集合的表示 集合里的每一个个体都需要保存两种数据,一个是自身的数据,一个是它的父亲是谁,由于本题所给数据都为数字,故可以直接用一个数组来存储(类似与静态链表的感觉),数组的下标就代表了是第几个个体,而每个值则代表父亲是谁,初始值全设为-1,最后将根结点的值修改成 (-儿子个数),这样在按秩归并的时候用来判断集合的大小(即树高) 按秩归并 普通的归并: set原创 2020-08-18 17:43:07 · 551 阅读 · 0 评论 -
堆的原理及其完全二叉树代码实现
优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 如何用一种数据结构来组织堆:完全二叉树,树根就是此时数据优先度最高的,随着数据的插入删除,优先度最高的树根也在动态变化。 完全二叉树的表示:一维数组,其中arr[0]为哨兵元素。 typedef struct HeapStruct *MaxHeap; struct HeapStruct { ElementType *Elements; /* 存储堆元素的数组 */原创 2020-08-03 15:11:45 · 253 阅读 · 1 评论 -
判断不同的序列是否是同一棵搜索树?
题意理解 : 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。 例如,按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树, 都得到一样的结果。 问题:对于输入的各种插入序列,你需要判断它们是否能 生成一样的二叉搜索树。 输入样例: 4 2 3 1 4 2 3 4 1 2 3 2 4 1 2 1 2 1 1 2 0 输出样例: Yes No No 求解思路 两个序列是否对应相同搜索树的判别 : 1.分别建两棵搜索树的判别方法 2原创 2020-07-27 10:41:05 · 233 阅读 · 0 评论 -
平衡二叉树的原理与实现
什么是平衡二叉树? 搜索树结点不同插入次序,将导致不同的深度和平均查找长度ASL,而平衡二叉树就是一颗任意一个结点的左右子树高度的差的绝对值不超过1的搜索二叉树。 附一个大佬写的图解:图解平衡二叉树 平衡二叉树的四种基本情况和操作: 左-左型:右旋 右-右型:左旋 左-右型:先左旋再右旋 右-左型:先右旋再左旋 struct AvlNode { int data; AvlNode lchild; AvlNode rchild; int height;//记录结点的高度 } int Height原创 2020-07-18 14:41:03 · 168 阅读 · 0 评论 -
二叉搜索(查找)树的原理与实现
查找分为两种查找 静态查找 动态查找 二叉查找树就是针对动态查找的一种数据组织的方式 二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质: 非空左子树的所有键值小于其根结点的键值。 非空右子树的所有键值大于其根结点的键值。 左、右子树都是二叉搜索树。 二叉搜索树操作的特别函数: Position Find( ElementType X, BinTree BST ):从二叉搜索树BST 中查找元素X,返回其所在结点的地址; Position FindMin( BinTree BST ):从二叉原创 2020-07-16 10:37:07 · 584 阅读 · 0 评论 -
测定C语言一段程序运行的时间
在C语言和C++中,若想测定一段程序运行的时间,应该用到time.h库中的clock函数。 clock_t:这是time.h库中的一种类型变量,一般用于测定程序运行的时间。 clock(): 获取程序开始执行后占用的处理器时间,返回值clock_t。 CLK_TCK:机器时钟每秒所走的时钟打点数。 知道了这三个的含义后,就可以进行程序的测定了,以下程序以C语言为例。 #include<stdio.h> #include<time.h> clock_t start ,stop;原创 2020-06-16 16:29:25 · 1227 阅读 · 0 评论