随笔分类 - 数据结构与算法
记录我学习的数据结构与算法
发表于 2020-05-09 15:32阅读次数:23107评论次数:6
摘要:一、前言 今天面试的时候,被问到归并排序的时间复杂度,这个大家都知道是 ,但是面试官又继续问,怎么推导出来的。这我就有点懵了,因为之前确实没有去真正理解这个时间复杂度是如何得出的,于是就随便答了一波(理解了之后,发现面试的时候答错了......)。 归并排序和快速排序,是算法中,非常重要的两个知识点
阅读全文 »
发表于 2020-04-05 03:30阅读次数:1151评论次数:0
摘要:一、前言 这几天在研究MySQL相关的内容,而MySQL中比较重要的一个内容就是索引。对MySQL索引有了解的应该都知道,B+树是MySQL索引实现的一个主要的数据结构。今天这篇博客就来简单介绍一下B树、B+树以及MySQL索引使用这种数据结构实现的原因。 二、正文 2.1 B树 关于B树的操作细节
阅读全文 »
发表于 2020-03-24 02:39阅读次数:2039评论次数:5
摘要:一、前言 这几天想学一学红黑树这种数据结构,于是上网找了很多篇博客,初看吓了一跳,红黑树竟然如此复杂。连续看了几篇博客后,算是对红黑树有了一些了解,但是它的原理却并不是特别理解。网上的博客,千篇一律的都是在叙述红黑树的操作,如何插入节点、删除节点,旋转、变色等,只关注如何正确构建一棵红黑树,但是却很
阅读全文 »
发表于 2020-03-21 03:04阅读次数:615评论次数:0
摘要:一、前言 这两天想学学在 中广泛使用的数据结构——红黑树,但是看博客说学习红黑树之前需要了解 二叉排序树 以及 平衡二叉树 ,所以我花了点事件把这两个数据结构学习了一遍,也自己实现了一下这两种数据结构。可以说这是两种比较复杂的数据结构,尤其是平衡二叉树。但幸运的是,我找到了两篇讲解得非常不错的博客,
阅读全文 »
发表于 2020-01-18 01:09阅读次数:1288评论次数:0
摘要:一、前言 最近依旧在刷《剑指offer》的题目,然后今天写到了一道蛮有意思的题目,叫做包含min函数的栈,解题思路有点妙,写篇博客记录一下。 二、描述 这道题目的描述是: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)) 。 然后这题给出的原始代码
阅读全文 »
发表于 2020-01-14 23:48阅读次数:1202评论次数:1
摘要:前言 今天刷《剑指offer》的编程题,遇见一道挺有意思的题目,叫" 链表中环的入口节点,写篇博客记录一下。 描述 给出一个链表,在这个链表中至多存在一个环,要求: 若链表中有环,则返回环的入口节点,若没有环,返回null 。 思路 我们可以设置两个指针求解此问题:一个 ,每次向前走两个节点,一个
阅读全文 »
发表于 2020-01-10 19:30阅读次数:1786评论次数:0
摘要:前言 最近在刷《剑指offer》的题,其中有一道题目叫做 删除链表中重复的节点 ,我想了半天没想到比较好的解决办法,于是看了看大佬的解析(菜哭了)。不看不知道,一看吓一跳,这尼玛写的也太妙了,忍不住写篇博客记录一下这个解题思路和代码。 题目描述 在一个 排好序 的链表中,存在重复的结点,请删除该链表
阅读全文 »
发表于 2019-12-26 22:20阅读次数:347评论次数:0
摘要:title: Java实现堆排序 date: 2019 12 26 18:26:51 tags: 数据结构与算法 categories: 数据结构与算法 背景 过完年就要春招了,数据结构和算法是面试中的重要内容,尤其是数据结构。趁着最近已经基本没课,时间比较多,学习一些比较常见的算法。今天刚学会堆排
阅读全文 »
发表于 2019-10-10 13:33阅读次数:5545评论次数:1
摘要:问题 已知一棵二叉树的先序遍历以及中序遍历,重建二叉树。二叉树的每一个节点有三个属性,左子节点,右子节点,以及节点值。 思路 先序遍历服从规则 “根左右” ,所以由此可知,对于一个先序遍历得到的数组,第一个元素一定是 根节点 ; 中序遍历服从规则 ”左根右“ ,所以由此可知,对于一个中序遍历得到
阅读全文 »
发表于 2018-07-30 14:25阅读次数:69198评论次数:1
摘要:问题:给出两条线段,问两线段是否相交? 向量叉乘(行列式计算):向量a(x1,y1),向量b(x2,y2): 首先我们要明白一个定理:向量a×向量b(×为向量叉乘),若结果小于0,表示向量b在向量a的顺时针方向;若结果大于0,表示向量b在向量a的逆时针方向;若等于0,表示向量a与向量b平行。(顺逆时
阅读全文 »
发表于 2018-06-05 17:37阅读次数:5771评论次数:0
摘要:数据结构中图有多种存储结构,这里我就来说其中较简单的两种,邻接矩阵以及邻接表。 邻接矩阵:用一个n*n的矩阵来表示一张图,矩阵的横纵坐标均表示图的点,例如矩阵第i行第j列数字为1,在无向图中表示点i与点j之间有一条连线,而在有向图中表示在图中有一条由i指向j的边。这个点数字为几,代表有几条边。 邻接
阅读全文 »
发表于 2018-06-05 17:17阅读次数:245评论次数:0
摘要:二叉树的定义:二叉树是每个结点最多有两个子树的有序树。 下面的代码内容主要包括二叉树的建立,判断二叉树是否为空树,二叉树的先序遍历,中序遍历,后序遍历以及层次遍历,计算总结点个数,叶子节点个数,树的深度。 先序遍历(根左右):先访问一个节点的根,再访问其左子树,接着右子树,通过递归的方法。 中序遍历
阅读全文 »
发表于 2018-06-05 16:59阅读次数:424评论次数:0
摘要:数据结构的实验,栈和队列的实现。 栈的特点:先进后出,类似于一个只有一个口子,且一次只能容一个物体通过的容器,放在上面的物体必须先拿出才能拿下面的。 队列的特点:先进先出,类似于火车通过隧道,先进入隧道的先出隧道,切只能从隧道一边进入,一边出去。 我下面用的是链式结构来实现。 首先是栈的代码: 接着
阅读全文 »