摘要:
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 = "2", num2 = "3"输出: "6"示例 2: 输入 阅读全文
posted @ 2022-07-25 23:40
开源遗迹
阅读(26)
评论(0)
推荐(0)
摘要:
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位 阅读全文
posted @ 2022-07-25 22:53
开源遗迹
阅读(14)
评论(0)
推荐(0)
摘要:
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums = [1,2,0]输出:3示例 2: 输入:nums = [3,4,-1,1]输出:2示例 3: 输入:nums = [7, 阅读全文
posted @ 2022-07-25 22:24
开源遗迹
阅读(27)
评论(0)
推荐(0)
摘要:
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates = [1 阅读全文
posted @ 2022-07-25 21:17
开源遗迹
阅读(26)
评论(0)
推荐(0)
摘要:
位图的原理就是用一个 bit 来标识一个数字是否存在,采用一个 bit 来存储一个数据,所以这样可以大大的节省空间。 bitmap 是很常用的数据结构,比如用于 Bloom Filter 中;用于无重复整数的排序等等。 bitmap 通常基于数组来实现,数组中每个元素可以看成是一系列二进制数,所有元 阅读全文
posted @ 2022-07-25 20:23
开源遗迹
阅读(184)
评论(0)
推荐(0)
摘要:
B-tree 又叫平衡多路查找树。一棵 m 阶的 B-tree (m 叉树)的特性如下(其中 ceil(x)是一个取上限的函数) 1. 树中每个结点至多有 m 个孩子;2. 除根结点和叶子结点外,其它每个结点至少有有 ceil(m / 2)个孩子;3. 若根结点不是叶子结点,则至少有 2 个孩子(特 阅读全文
posted @ 2022-07-25 20:22
开源遗迹
阅读(96)
评论(0)
推荐(0)
摘要:
红黑树的特性(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL 或NULL)的叶子节点! ](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。左 阅读全文
posted @ 2022-07-25 20:18
开源遗迹
阅读(51)
评论(0)
推荐(0)
摘要:
前缀树(Prefix Trees 或者 Trie)与树类似,用于处理字符串相关的问题时非常高效。它可以实现快速检索,常用于字典中的单词查询,搜索引擎的自动补全甚至 IP 路由。下图展示了“top”, “thus”和“their”三个单词在前缀树中如何存储的 阅读全文
posted @ 2022-07-25 20:09
开源遗迹
阅读(106)
评论(0)
推荐(0)
摘要:
首先如果普通二叉树每个节点满足:左子树所有节点值小于它的根节点值,且右子树所有节点值大于它的根节点值,则这样的二叉树就是排序二叉树。 插入操作 首先要从根节点开始往下找到自己要插入的位置(即新节点的父节点);具体流程是:新节点与当前节点比较,如果相同则表示已经存在且不能再重复插入;如果小于当前节点, 阅读全文
posted @ 2022-07-25 20:07
开源遗迹
阅读(47)
评论(0)
推荐(0)
摘要:
散列表(Hash table,也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据元素)的比较操作。散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必须要在数据元素的存储 阅读全文
posted @ 2022-07-25 20:00
开源遗迹
阅读(179)
评论(0)
推荐(0)
摘要:
链表是一种数据结构,和数组同级。比如, Java 中我们使用的 ArrayList,其实现原理是数组。而LinkedList 的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。 阅读全文
posted @ 2022-07-25 19:58
开源遗迹
阅读(165)
评论(0)
推荐(0)
摘要:
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 阅读全文
posted @ 2022-07-25 19:55
开源遗迹
阅读(48)
评论(0)
推荐(0)
摘要:
栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素。 阅读全文
posted @ 2022-07-25 19:52
开源遗迹
阅读(144)
评论(0)
推荐(0)
摘要:
每个 sever 首先给自己投票,然后用自己的选票和其他 sever 选票对比,权重大的胜出,使用权重较大的更新自身选票箱。 具体选举过程如下: 1. 每个 Server 启动以后都询问其它的 Server 它要投票给谁。对于其他 server 的询问,server 每次根据自己的状态都回复自己推荐 阅读全文
posted @ 2022-07-25 19:45
开源遗迹
阅读(64)
评论(0)
推荐(0)
摘要:
17、zookeeper是如何保证事务的顺序一致性的? zookeeper采用了全局递增的事务id来标识,所有的proposal(提议)都在被提出来的时候就被加上了zxid,zxid实际上是一个64位的数字·,高32位是epoch(时期,纪元,世;新时代)用来标识leader周期,如果有新的 lea 阅读全文
posted @ 2022-07-25 19:45
开源遗迹
阅读(350)
评论(0)
推荐(0)

浙公网安备 33010602011771号