list题目
type
status
date
slug
summary
tags
category
icon
password
Property

 

合并两个有序链表

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
notion image
跳跃表 Skip List
type
status
date
slug
summary
tags
category
icon
password
Property
 
跳跃表(Skip List)是在链表的基础上增加了“跳跃”的功能,即加上了【多级索引】,通过索引来快速查找,可以支持快速的删除、插入和查找操作。它实际上是一种增加了前向指针的链表,是一种随机化的数据结构。其具有如下性质:
  1. 由很多层链表组成
  1. 每一层都是一个有序的链表
  1. 最底层(level 1)的链表包含所有元素
  1. 如果一个元素出现在 level i 层的链表中,则它在 level i 之下的链表也都会出现
  1. 每个节点都包含两个指针,一个指向同一链表中的下一个元素,一个指向下面一层的元素
 
对于下图所示的单链表而言,即使数据是有序的,但是如果想要查找某个数据,只能从头节点开始向后遍历,查询效率低,时间复杂度为
notion image
将其变为跳表形式,则如下图所示:
notion image
双端队列 deque
type
status
date
slug
summary
tags
category
icon
password
Property
 
目录
目录

 
deque提供类似于vector的功能,但在序列的开头也可以有效地插入和删除元素,而vector仅支持在尾部操作。但是,与vector不同的是deque不能保证将其所有元素存储在连续的存储位置中,因此deque不允许指针偏移来访问另一个元素,否则将会导致未定义的行为发生。
notion image
 
 
双端队列是一种同时具有队列和栈的性质的一种数据结构,在队列的两头都可以进行插入和删除的操作。
堆栈 stack
type
status
date
slug
summary
tags
category
icon
password
Property

 

堆栈Stack

栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作。进行数据插入的删除和操作的一端,称为栈顶 。另一端则称为栈底 。栈中的元素遵守后进先出的原则,即LIFO原则(Last In First Out)。
notion image
notion image
stack题目
type
status
date
slug
summary
tags
category
icon
password
Property

删除字符串中的所有相邻重复项

题目:给出由小写字母组成的字符串S重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
示例:
 

每日温度

题目:给定一个整数数组temperatures ,表示每天的温度,返回一个数组answer ,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。
堆 Heap
type
status
date
slug
summary
tags
category
icon
password
Property
 
目录
目录

 
堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。
每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 priority_queue 其实就是一个大根堆。(小根)堆主要支持的操作有:插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。
一些功能强大的堆(可并堆)还能(高效地)支持merge等操作。一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。
堆的分类
操作 \ 数据结构
配对堆
二叉堆
左偏树
二项堆
斐波那契堆
队列 queue
type
status
date
slug
summary
tags
category
icon
password
Property
目录
目录

 
 

队列

队列(queue)是一种具有「先进入队列的元素一定先出队列」性质的表。只允许在一端进行插入数据操作,在另一端进行删除数据。由于该性质,队列通常也被称为先进先出(first in first out)表,简称 FIFO 表。
notion image
type
status
date
slug
summary
tags
category
icon
password
Property
 

 

树是一种非线性的数据结构,是由个有限结点组成一个具有层次关系的集合。
notion image
有一个特殊的结点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成 个互不相交的集合 其中每一个集合 又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。

相关名词解释

  • 节点的度:一个节点的子树 (子节点) 个数称为该节点的度,A的度为3
树的题目
type
status
date
slug
summary
tags
category
icon
password
Property
 

 

二叉树的最大深度

题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
 
 

二叉树的最小深度

二叉搜索树 BST
type
status
date
slug
summary
tags
category
icon
password
Property
 
目录
目录

 
 
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
  • 若它的左子树不为空,则左子树上所有节点的值都 小于「根节点的值」
  • 若它的右子树不为空,则右子树上所有节点的值都 大于「根节点的值」
  • 它的所有子树也都是二叉搜索树
 
二叉搜索树 的题目
type
status
date
slug
summary
tags
category
icon
password
Property
 

 
 

区间元素查找

题目:给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。
示例:
notion image
二叉平衡树 AVL
type
status
date
slug
summary
tags
category
icon
password
Property
 
目录
目录

 
平衡二叉搜索树(Self-balancing binary search tree),又称AVL树
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。
mapset等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。
 
具有以下性质:
  • 左右子树都是AVL树
1
...
56789
...
78