首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
算法
半芽湾
创建于2022-12-18
订阅专栏
数据结构和算法
暂无订阅
共19篇文章
创建于2022-12-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
图的深度优先遍历和广度优先遍历
深度优先遍历(DFS) 我们已leetcode中的岛屿问题,讲解一下图的深度优先遍历。 岛屿数量 题目描述 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可
Etcd使用的Raft算法
etcd 是如何基于 Raft 来实现高可用、数据强一致性的呢? 本篇主要内容: 深入分析 etcd 在遇到 Leader 节点 crash等异常后,Follower 节点如何快速感知到异常,并高效选
堆的使用:如何在大数据流中快速找到中位数
这个问题从一个leetcode算法题说起(295.数据流中位数)。 求一个无序数组的中位数,我们首先想到的是进行排序,然后找到中间值(如果数组长度是奇数,那么正好是中间那个值;如果数组长度是偶数,那么
什么是拓扑排序?
基础 什么是有向无环图 一个 无环的有向图 称为 有向无环图(Directed Acycline Graph),简称 DAG 图。 图中最左边的是有向树,中间的是有向无环图,最右则的是有向图。 什么是
哈希算法解决什么问题
哈希算法历史悠久,业界著名的哈希算法也有很多,比如 MD5、SHA 等。在我们平时的开发中,基本上都是拿现成的直接用。在实际的开发中,我们该如何用哈希算法解决问题。 什么是哈希算法 哈希算法的定义和原
数据结构之散列表
散列表用的就是数组支持按照下标随机访问的时候,时间复杂度是 O(1) 的特性。我们通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,我们用同样的散列函
跳表是什么
二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,就真的没法用二分查找算法了吗?只需要对链表稍加改造,就可以支持类似“二分”的查找算法。我们把改造之后的数据结构叫作跳
排序算法讲解(三)
三种时间复杂度是 O(n) 的排序算法:桶排序、计数排序、基数排序。因为这些排序算法的时间复杂度是线性的,所以我们把这类排序算法叫作线性排序(Linear sort)。之所以能做到线性的时间复杂度,主
排序算法讲解(二)
归并排序和快速排序是时间复杂度为 O(nlogn) 的排序算法。归并排序和快速排序都用到了分治思想。 归并排序的原理 归并排序的核心思想还是蛮简单的。如果要排序一个数组,我们先把数组从中间分成前后两部
排序算法讲解(一)
排序算法最常见,最经典的有:冒泡排序,插入排序,选择排序,快速排序,归并排序,计数排序,基数排序,桶排序。 分析排序算法 排序算法的执行效率 一般会从这几个方面来衡量: 1. 最好情况、最坏情况、平均
常见算法之二分查找
一、基础知识 在一个长度为n的数组中查找一个数字,如果逐一扫描数组中的每个数字,那么需要O(n)的时间。如果数组是排序的(通常按照递增的顺序排序),那么可以采用二分查找算法进行优化。可以取出位于数组中
常见算法之前缀树
一、基础知识 前缀树,又称为字典树,它用一个树状的数据结构存储一个字典中的所有单词。如果一个字典中包含单词"can"、"cat"、"come"、"do"、"i"、"in"和"inn",那么保存该字典所
常见算法之堆
一、基础知识 堆是一种特殊的树形数据结构。根据根节点的值与子节点的值的大小关系,堆又分为最大堆和最小堆。在最大堆中,每个节点的值总是大于或等于其任意子节点的值,因此最大堆的根节点就是整个堆的最大值。在
常见算法之Tree
基础知识 二叉树。顾名思义,在二叉树中每个节点最多只有两个子节点,可以分别把它们称为左子节点和右子节点。 二叉树是一种典型的具有递归性质的数据结构。二叉树的根节点可能有子节点,子节点又是对应子树的根节
常见算法之队列
基础知识 队列是一种常用的数据结构,它最大的特点是“先入先出”,即先进入队列中的元素最先出来。这和我们日常生活中的队列一致,排在队列最前面的人优先得到服务。由于队列要保证“先入先出”的顺序,因此新的元
常见算法之Hash
基础知识 哈希表是一种常见的数据结构,在解决算法面试题的时候经常需要用到哈希表。哈希表最大的优点是高效,在哈希表中插入、删除或查找一个元素都只需要O(1)的时间。因此,哈希表经常被用来优化时间效率。
常见算法之链表
基础知识 链表是一种常见的基础数据结构。在链表中,每个节点包含指向下一个节点的指针,这些指针把节点连接成链状结构。在创建链表时无须事先知道链表的长度。链表节点的内存分配不是在创建链表时一次性地完成,而
常见算法之字符串
基础知识 字符串由任意长度的字符组成,是编程语言中表示文本的数据类型。String类型所表达的字符串是无法改变的,也就是说,只能对字符串进行读操作。如果对字符串进行写操作,那么修改的内容在返回值的字符
常见算法之数组
基础知识 数组是一种简单的数据结构,是由相同类型的元素组成的数据集合,并且占据一块连续的内存并按照顺序存储数据。最简单的数组是一维的,其中元素的存取以单一的下标表示。二维数组对应于数学上矩阵的概念,其