B树的性质

(1)B树的每个节点 x 都具有以下属性:

  • x.n 存储在节点 x 中的关键字个数。

  • x.n 个关键字本身 x.key0, x.key1,…, x.keyn-1,以升序排列,注编程语言数组下标从 0 开始。

  • x.leaf 布尔值,表示节点 x 是否是叶节点。

阅读全文 »

前言

B树是为磁盘等慢速IO设备设计的一种平衡搜索树,B树类似于红黑树,但它在降低I/O操作数方面要更好一些,许多数据库使用 B树或B树的变种来存储信息。

B 树与红黑树的不同之处在于 B树的节点可以有很多孩子,从数个到数千个。含有 n 个节点的B树的高度为 O(ln n),一棵B树的严格高度可能比一棵红黑树的高度要小许多,因为它的分支因子,即表示高度的对数的底数可以非常大。因此我们可以使用 B树在 O(lg n) 内完成一些动态集合操作。

阅读全文 »

题目链接

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

阅读全文 »

缓冲区溢出是一种非常普遍的漏洞,它的原理为输入大量的数据,超出了缓冲区的大小,且系统没有对输入数据的长度进行检查,这样数据可能覆盖了内存的重要区域,例如返回地址等,攻击者只需制作特定的数据,就可以让受攻击的计算机执行指定的代码。为了重现一些经典的缓冲区溢出漏洞,需要关闭 Linux 下针对这方面的一些保护措施,例如:

SSP( Stack Smashing Protector )

阅读全文 »

题目链接

给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。

进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?

阅读全文 »

题目链接

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

阅读全文 »

递归是一种强大的技术,可以解决很多复杂的问题。很多算法都建立递归之上,像树的遍历,深搜,广搜,还有很多强大的排序算法等。现在来分析以下这些常见的递归算法的时间复杂度是怎样的。

递归的时间复杂度=递归的深度*每层递归的代价

递归的空间复杂度=递归的深度*每次递归所需空间

阅读全文 »

原理

对于少数元素的排序,这是一个有效算法。插入排序类似于排序手中的扑克牌。开始时,我们左手为空并且桌子上的牌面向下。然后我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。

阅读全文 »

使用智能指针需包含以下头文件:#include <memory>

shared_ptr类

shared_ptr允许多个指针指向同一个对象
支持的操作:

阅读全文 »
0%