线性表(linear list) 是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...
https://blog.csdn.net/hsy1603914691/article/details/147820677
早期的计算机主要应用于科学计算,随着计算机的发展和应用范围的拓宽,计算机需要 处理的数据量越来越大,数据的类型越来越多,数据的结构越来越复杂,计算机的对象从简 ...
要实现高效删除,可以使用一个哈希表来记录已经出现过的数值的绝对值。使用哈希表的原因是其查找和插入操作的时间复杂度为O(1)。这样我们可以在线性时间内(O(n))...
数据类型是一个值的集合和定义在此集合上的一组操作的总称。例如:定义int整形,我们就可以把他们加减乘除等操作。
https://leetcode.cn/problems/binary-search/
顺便强调下,「算法工程师」做的这个「算法」,和「数据结构与算法」中的这个「算法」完全是两码事,免得一些初学读者误解。
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在 查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为 O(N),平衡树中...
在学习数据结构和算法时,我们常常会接触到表达式的不同写法,它们分别是中缀表达式、前缀表达式和后缀表达式。我们日常最熟悉的表达形式就是中缀表达式,如下所示:
LRU( Least Recently Used) 是一种淘汰策略的缩写,意思是 最近最少使用,它是一种 Cache 替换算法。
在一些应用问题中,需要将 n 个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中...
最短路径问题:从在带权有向图 G 中的某一顶点出发,找出一条通往另一顶点的最短路径,最短也就是沿路径各边的权值总和达到最小。
连通图中的每一棵生成树,都是原图的一个极大无环子图,即:从其中删去任何一条边,生成树就不再连通;反之,在其中引入任何一条新边,都会形成一条回路。
我们这里只实现红黑树的插入和删除,了解他们的底层即可,而后面我们在介绍 map 以及 set 的模拟实现的时候,我们就会进一步将红黑树进行改造!
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新...
首先讲讲为什么要去实现非递归的遍历呢,因为递归的缺陷就是空间问题,栈溢出是有可能存在的情况,所以我们必须尝试着去迭代遍历!
二叉搜索树(Binary Search Tree)又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
树是一种 非线性 的数据结构,它是由 n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝...